PHP ja SQL: Laske tai kysele suuri ympyräetäisyys leveys- ja pituusasteiden välillä Haversine-kaavan avulla

Haversinen kaava - Laske suuri ympyräetäisyys PHP: llä tai MySQL: llä

Tässä kuussa olen ohjelmoinut melko vähän PHP: ssä ja MySQL: ssä GIS: ää. Nuuskaamalla netissä, minulla oli todella vaikea löytää joitain Maantieteelliset laskelmat löytää etäisyys kahden sijainnin välillä, joten halusin jakaa ne täällä.

Euroopan lentokartta, jolla on suuri ympyräetäisyys

Yksinkertainen tapa laskea kahden pisteen välinen etäisyys on Pythagorean kaavan avulla laskettaessa kolmion hypotenuus (A² + B² = C²). Tätä kutsutaan Euklidinen etäisyys.

Se on mielenkiintoinen alku, mutta se ei koske maantiedettä, koska leveys- ja pituuspiirien välinen etäisyys on ei sama etäisyys toisistaan. Kun lähestyt päiväntasaajaa, leveyspiirit etenevät toisistaan. Jos käytät jonkinlaista yksinkertaista triangulaatioyhtälöä, se voi mitata etäisyyden tarkasti yhdessä paikassa ja hirvittävän väärin toisessa, maapallon kaarevuuden vuoksi.

Suuri ympyräetäisyys

Pitkiä matkoja maapallon ympäri kulkeneita reittejä kutsutaan Suuri ympyräetäisyys. Se on ... pienin pallon kahden pisteen välinen etäisyys on erilainen kuin tasaisella kartalla olevat pisteet. Yhdistä se siihen, että leveys- ja pituusasteet eivät ole yhtä kaukana toisistaan ​​... ja sinulla on vaikea laskenta.

Tässä on upea videoesitys siitä, kuinka suuret piirit toimivat.

Haversinen kaava

Maan kaarevuutta käyttävä etäisyys sisällytetään Haversinen kaava, joka käyttää trigonometriaa maan kaarevuuden sallimiseksi. Kun löydät etäisyyden 2 paikasta maan päällä (kuten linnut), suora viiva on todella kaari.

Tämä koskee lentolentoja - oletko koskaan tarkastellut todellista lentokarttaa ja huomannut, että ne ovat kaarevat? Tämä johtuu siitä, että on lyhyempi lentää kaaressa kahden pisteen välillä kuin suoraan sijaintiin.

PHP: Laske etäisyys kahden leveys- ja pituusasteen välillä

Joka tapauksessa tässä on PHP-kaava kahden pisteen välisen etäisyyden laskemiseksi (yhdessä mailin ja kilometrin muunnoksen kanssa) pyöristettynä kahteen desimaaliin.

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'miles') {
  $theta = $longitude1 - $longitude2; 
  $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); 
  $distance = acos($distance); 
  $distance = rad2deg($distance); 
  $distance = $distance * 60 * 1.1515; 
  switch($unit) { 
    case 'miles': 
      break; 
    case 'kilometers' : 
      $distance = $distance * 1.609344; 
  } 
  return (round($distance,2)); 
}

SQL: Kaikkien tietueiden hakeminen tietyltä alueelta laskemalla etäisyys maileina leveys- ja pituusasteiden avulla

On myös mahdollista käyttää SQL: ää laskemiseen kaikkien tietueiden löytämiseksi tietyltä etäisyydeltä. Tässä esimerkissä aion kysyä MyTable-sovellusta MySQL: ssä löytääksesi kaikki tietueet, jotka ovat pienempiä tai yhtä suuria kuin muuttujan $ etäisyys (mailissa) sijaintini kohtaan $ latitude ja $ longitude:

Kysely kaikkien tietyn tietueen hakemisesta etäisyys laskemalla etäisyys mailina kahden leveys- ja pituusasteen välillä ovat:

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`)*pi()/180)))) * 180/pi()) * 60 * 1.1515) as distance FROM `table` WHERE distance <= ".$distance."

Sinun on mukautettava tämä:

  • $ pituusaste - tämä on PHP-muuttuja, jossa ohitan pisteen pituusasteen.
  • $ leveysaste - tämä on PHP-muuttuja, jossa ohitan pisteen pituusasteen.
  • $ etäisyys - tämä on etäisyys, jonka haluat löytää kaikki tietueet pienemmät tai yhtä suuret.
  • taulukko - tämä on taulukko ... sinun kannattaa korvata se taulukon nimellä.
  • leveysaste - tämä on leveysasteesi kenttä.
  • pituusaste - tämä on pituusasteesi kenttä.

SQL: Kaikkien tietueiden hakeminen tietyltä alueelta laskemalla etäisyys kilometreinä leveys- ja pituusasteiden avulla

Ja tässä on SQL-kysely, joka käyttää kilometrejä MySQL: ssä:

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`) * pi()/180)))) * 180/pi()) * 60 * 1.1515 * 1.609344) as distance FROM `table` WHERE distance <= ".$distance."

Sinun on mukautettava tämä:

  • $ pituusaste - tämä on PHP-muuttuja, jossa ohitan pisteen pituusasteen.
  • $ leveysaste - tämä on PHP-muuttuja, jossa ohitan pisteen pituusasteen.
  • $ etäisyys - tämä on etäisyys, jonka haluat löytää kaikki tietueet pienemmät tai yhtä suuret.
  • taulukko - tämä on taulukko ... sinun kannattaa korvata se taulukon nimellä.
  • leveysaste - tämä on leveysasteesi kenttä.
  • pituusaste - tämä on pituusasteesi kenttä.

Hyödynnin tätä koodia yrityksen kartoitusalustalla, jota käytimme vähittäiskaupassa, jossa oli yli 1,000 sijaintia Pohjois-Amerikassa, ja se toimi hyvin.

76 Kommentit

  1. 1

    Paljon kiitoksia jakamisesta. Tämä oli helppo kopiointi- ja liittämistyö ja toimii hyvin. Olet säästänyt minua paljon aikaa.
    FYI kenelle tahansa portille C: hen:
    kaksinkertainen deg2rad (kaksinkertainen deg) {paluu deg * (3.14159265358979323846 / 180.0); }

  2. 2

    Erittäin mukava lähetys - toimi erittäin hienosti - Minun täytyi vaihtaa vain pöydän nimi, jolla oli lat-long. Se toimii melko nopeasti .. Minulla on kohtuullisen pieni määrä pituuksia (<400), mutta mielestäni tämä skaalautuu hienosti. Mukava sivusto - olen juuri lisännyt sen del.icio.us-tililleni ja tarkistan sen säännöllisesti.

  3. 4
  4. 5
  5. 8

    luulen, että SQL tarvitsee ottaa lausunnon.
    sen sijaan, että sinun tarvitsee tarvita WHERE-etäisyys <= $ -matka
    käytä HAVING distance <= $ distance

    muuten kiitos säästämästäni minulle aikaa ja energiaa.

  6. 10
  7. 11
  8. 12

    Kiitos paljon tämän koodin jakamisesta. Se säästää paljon kehitysaikaa. Kiitos myös lukijoille huomautuksesta, että HAVING-käsky on välttämätön MySQL 5.x: lle. Erittäin avuliasta.

  9. 14
  10. 15

    Hei,

    Toinen kysymys. Onko olemassa alla olevan kaltaista kaavaa NMEA-merkkijonoille?

    1342.7500, N, 10052.2287, E

    $GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B

    Thanks,
    Ahdistaa

  11. 16

    Huomasin myös, että WHERE ei toiminut minulle. Muutti sen HAVINGiksi ja kaikki toimii täydellisesti. Aluksi en lukenut kommentteja ja kirjoittanut sen uudestaan ​​sisäkkäisellä valinnalla. Molemmat toimivat hienosti.

  12. 17
  13. 18

    Uskomattoman hyödyllinen, kiitos paljon! Minulla oli joitain ongelmia uuden "HAVINGin" kanssa sen sijaan, että "WHERE", mutta kun luin kommentit täällä (noin puolen tunnin hampaiden hionnan jälkeen turhautuneena = P), sain sen toimimaan hienosti. Kiitos ^ _ ^

  14. 19
  15. 20

    Pidä mielessä, että tällainen valittu lausunto on erittäin laskennallisesti intensiivinen ja siksi hidas. Jos sinulla on paljon näitä kyselyitä, se voi tukkia asiat melko nopeasti.

    Paljon vähemmän intensiivinen lähestymistapa on suorittaa ensimmäinen (karkea) valinta käyttämällä neliöaluetta, joka määritetään lasketulla etäisyydellä, eli "valitse * taulukonimestä, jossa leveysaste lat1: n ja lat2: n välillä ja pituusaste: lon1: n ja lon2: n välillä". lat1 = kohdekohta - leveysaste, lat2 = kohdealue + leveysero, samanlainen kuin lon. latdiff ~ = etäisyys / 111 (km) tai etäisyys / 69 mailia, koska yksi leveysaste on ~ 1 km (pieni vaihtelu, koska maa on hieman soikea, mutta riittävä tähän tarkoitukseen). londiff = etäisyys / (abs (cos (deg111rad (leveysaste)) * 2)) - tai 111 mailia (voit itse asiassa ottaa hieman suuremman neliön vaihtelujen huomioon ottamiseksi). Ota sitten tulos ja syötä se säteenvalintaan. Älä unohda ottaa huomioon rajojen ulkopuolisia koordinaatteja - ts. Hyväksyttävän pituuspiirin alue on -69 - +180 ja hyväksyttävän leveysasteen alue on -180 - +90 - jos latdiff tai londiff kulkee tämän alueen ulkopuolella . Huomaa, että useimmissa tapauksissa tämä ei välttämättä ole sovellettavissa, koska se vaikuttaa vain Tyynen valtameren läpi kulkevalla linjalla olevista laskelmista napasta napaan, vaikka se leikkaa osan chukotkaa ja osan alaskaa.

    Se, mitä saavutamme tällä tavoin, on merkittävä vähennys pisteiden lukumäärässä, johon teet tämän laskelman. Jos tietokannassa on miljoona globaalia pistettä, jotka on jaettu karkeasti tasaisesti ja haluat etsiä 100 km: n säteellä, ensimmäinen (nopea) hakusi on pinta-alaltaan 10000 neliökilometriä ja tuottaa todennäköisesti noin 20 tulosta (perustuen tasaiseen jakautumiseen yli pinta-ala on noin 500 miljoonaa neliökilometriä), mikä tarkoittaa, että suoritat kompleksisen matkan laskennan tälle kyselylle 20 kertaa miljoonan kerran.

    • 21
      • 22

        Upeat neuvot! Olen itse asiassa työskennellyt kehittäjän kanssa, joka kirjoitti toiminnon, joka veti sisäisen neliön, ja sitten rekursiivisen funktion, joka teki neliön kehän ympärille sisällyttämään ja sulkemaan pois jäljellä olevat pisteet. Tulos oli uskomattoman nopea tulos - hän pystyi arvioimaan miljoonia pisteitä mikrosekunnissa.

        Yllä oleva lähestymistapani on ehdottomasti "raaka", mutta kykenevä. Kiitos taas!

        • 23

          Doug,

          Olen yrittänyt käyttää mysql: ää ja php: tä sen arvioimiseksi, onko latin pitkä piste monikulmion sisällä. Tiedätkö, onko kehittäjäystäväsi julkaissut esimerkkejä tämän tehtävän suorittamisesta. Vai tiedätkö hyviä esimerkkejä. Kiitos etukäteen.

  16. 24

    Hei kaikki, tämä on testini SQL-käsky:

    SELECT DISTINCT area_id, (
    (
    (
    acos( sin( ( 13.65 * pi( ) /180 ) ) * sin( (
    `lat_dec` * pi( ) /180 ) ) + cos( ( 13.65 * pi( ) /180 ) ) * cos( (
    `lat_dec` * pi( ) /180 )
    ) * cos( (
    ( 51.02 - `lon_dec` ) * pi( ) /180 )
    )
    )
    ) *180 / pi( )
    ) *60 * 1.1515 * 1.609344
    ) AS distance
    FROM `post_codes` WHERE distance <= 50

    ja Mysql kertoo minulle, että etäisyyttä ei ole sarakkeena, voin käyttää järjestystä, voin tehdä sen ilman MITÄ, ja se toimii, mutta ei sen kanssa ...

  17. 26

    Tämä on hienoa, mutta se on juuri niin kuin linnut lentävät. Olisi hienoa yrittää sisällyttää google maps -sovellusliittymä tähän jotenkin (ehkä tieliikenteen avulla). Minun on vielä tehtävä PHP: ssä simuloitu hehkutustoiminto, joka pystyy tarjoamaan tehokkaan ratkaisun matkustavan myyjän ongelmaan. Mutta luulen, että voin pystyä käyttämään osan koodistasi tekemään niin.

  18. 27
  19. 28

    Hyvä artikkeli! Löysin paljon artikkeleita, jotka kuvaavat kuinka kahden pisteen välinen etäisyys lasketaan, mutta etsin todella SQL-koodinpätkää.

  20. 29
  21. 30
  22. 31
  23. 32
  24. 36

    Kahden päivän tutkimus löytääkseni tämän sivun, joka ratkaisee ongelmani. Näyttää siltä, ​​että minun on parempi pudottaa WolframAlphani ja harjata matematiikkaani. Siirtyminen WHERE-tilasta HAVINGiin käsikirjoitukseni on kunnossa. KIITOS

  25. 37
  26. 39

    Toivon, että tämä oli ensimmäinen sivu, jonka löysin tältä. Kokeiltuani useita erilaisia ​​komentoja tämä oli ainoa, joka toimi oikein, ja omaan tietokantaani sovittamiseen vaadittiin vain vähän muutoksia.
    Kiitos paljon!

  27. 40

    Toivon, että tämä oli ensimmäinen sivu, jonka löysin tältä. Kokeiltuani useita erilaisia ​​komentoja tämä oli ainoa, joka toimi oikein, ja omaan tietokantaani sovittamiseen vaadittiin vain vähän muutoksia.
    Kiitos paljon!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47
  34. 49
  35. 50
  36. 52

    Kiitos Douglas, SQL-kysely on juuri sitä mitä tarvitsin, ja ajattelin, että minun on kirjoitettava se itse. Olet pelastanut minut mahdollisesti pituusasteiden pituusasteiden oppimiskäyrältä!

  37. 53
  38. 55
  39. 56
  40. 58

    kiitos tämän hyödyllisen artikkelin lähettämisestä,  
    mutta jostain syystä haluaisin kysyä
    kuinka saada etäisyys mysql db: n sisällä olevien koordinaattien ja käyttäjän lisäämien php: een välillä?
    kuvaamaan selkeämmin:
    1. käyttäjän on lisättävä [id] valitaksesi määritetyt tiedot db: stä ja käyttäjän itse koordinoista
    2. php-tiedosto saa kohdetiedot (koordinaatit) käyttämällä [id] ja laskee sitten käyttäjän ja kohdepisteen välisen etäisyyden

    tai voitko vain yksinkertaisesti saada etäisyyden alla olevasta koodista?

    $ qry = “SELECT *, (((acos (sin ((“. $ leveysaste. ”* pi () / 180)) * sin ((` Leveysaste * pi () / 180)) + cos ((“. $ leveysaste. ”* pi () / 180)) * cos ((` Leveysaste * pi () / 180)) * cos ((((.. $ pituusaste. - - Pituusaste) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) etäisyydellä `` MyTable''WERE-etäisyydestä> = ". $ Etäisyys". >>>> voinko "ottaa pois" etäisyyden täältä?
    Kiitos taas,
    Timmy S.

  41. 60

    ok, kaikki mitä olen kokeillut, ei toimi. Tarkoitan, mikä minulla on, toimii, mutta etäisyydet ovat kaukana.

    Voisiko kukaan mahdollisesti nähdä, mikä vika tässä koodissa on?

    if (isset ($ _ POST ['lähetetty'])) {$ z = $ _POST ['postinumero']; $ r = $ _POST ['säde']; kaiku "Tulokset haulle". $ z; $ sql = mysql_query (“SELECT DISTINCT m.zipcode, m.MktName, m.LocAddSt, m.LocAddCity, m.LocAddState, m.x1, m.y1, m.verified, z1.lat, z2.lon, z1. kaupunki, z1.state ALK. mrk m, zip z1, zip z2 MISSÄ m.zipcode = z1.zipcode JA z2.zipcode = $ z AND (3963 * acos (katkaise (sin (z2.lat / 57.2958) * sin (m. y1 / 57.2958) + cos (z2.lat / 57.2958) * cos (m.y1 / 57.2958) * cos (m.x1 / 57.2958 - z2.lon / 57.2958), 8))) <= $ r ") tai kuole (mysql_error ()); while ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ row ['MktName']. ""; $ store = $ row ['LocAddSt']. ""; $ store. = $ row ['LocAddCity']. ",". $ row ['LocAddState']. " ". $ Row ['postinumero']; $ latitude1 = $ rivi ['lat']; $ longitude1 = $ rivi ['lon']; $ latitude2 = $ rivi ['y1']; $ longitude2 = $ rivi ['x1']; $ kaupunki = $ rivi ['kaupunki']; $ state = $ row ['tila']; $ dis = getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = etäisyys ($ lat1, $ lon1, $ lat2, $ lon2); $ verified = $ row ['vahvistettu']; jos ($ verified == '1') {kaikua ""; kaiku “”. $ myymälä. ””; echo $ dis. " kaukana"; kaiku “”; } else {kaiku "". $ kauppa. ""; echo $ dis. " kaukana"; kaiku “”; }}}

    Omat toiminnot.php-koodi
    funktio getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ etäisyys = (sin (deg2rad ($ latitude1)) * sin (deg2rad ($ latitude2))) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ etäisyys = acos ($ etäisyys); $ etäisyys = rad2deg ($ etäisyys); $ etäisyys = $ etäisyys * 60 * 1.1515; kytkin ($ yksikkö) {tapaus 'Mi': tauko; tapaus 'Km': $ etäisyys = $ etäisyys * 1.609344; } paluu (kierros ($ etäisyys, 2)); }

    Kiitos jo etukäteen

  42. 61
  43. 62

    Hei Douglas, loistava artikkeli. Minusta selityksesi maantieteellisistä käsitteistä ja koodista oli todella mielenkiintoinen. Ainoa ehdotukseni olisi välilyönti ja sisennä näytettävä koodi (kuten esimerkiksi Stackoverflow). Ymmärrän, että haluat säästää tilaa, mutta tavanomainen koodiväli / sisennys tekisi minulle kuin ohjelmoijalle paljon helpomman lukea ja leikata. Joka tapauksessa, se on pieni asia. Jatka hyvää työtä.

  44. 64
  45. 65
  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    näyttää nopeammalta (mysql 5.9) käyttää kaavaa kahdesti valinnassa ja missä:
    $ formula = “(((acos (sin ((“. $ leveysaste. ”* pi () / 180)) * sin ((` `Leveysaste * * pi () / 180)) + cos ((“. $ leveysaste. ”* Pi () / 180)) * cos ((` Leveysaste * pi () / 180)) * cos (((“. $ Pituusaste.” - `Pituusaste`) * pi () / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) ”;
    $ sql = 'SELECT *,'. $ -kaava. ' etäisyydellä taulukosta WHERE '.. $ -kaava.' <= '. $ etäisyys;

  51. 71
  52. 72

    Kiitos paljon tämän artikkelin leikkaamisesta. Se on erittäin hyödyllinen.
    PHP luotiin aluksi yksinkertaiseksi komentosarjaalustaksi nimeltä ”Personal Home Page”. Nykyään PHP (lyhenne sanoista Hypertext Preprocessor) on vaihtoehto Microsoftin Active Server Pages (ASP) -tekniikalle.

    PHP on avoimen lähdekoodin palvelinpuolen kieli, jota käytetään dynaamisten verkkosivujen luomiseen. Se voidaan upottaa HTML-muotoon. PHP: tä käytetään yleensä yhdessä MySQL-tietokannan kanssa Linux / UNIX-verkkopalvelimissa. Se on luultavasti suosituin komentosarjakieli.

  53. 73

    Löysin yllä olevan ratkaisun, joka ei toimi kunnolla.
    Minun täytyy vaihtaa:

    $ qqq = “SELECT *, (((acos (sin ((“. $ leveysaste. ”* pi () / 180)) * sin ((` latt` * pi () / 180)) + cos (("). $ leveysaste. “* pi () / 180)) * cos ((` latt` * pi () / 180)) * cos ((((”. $ pituuspiiri.“ - `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) etäisyydellä `rekisteristä``;

  54. 75
  55. 76

    Hei, pyydän todella apuasi tässä.

    Tein hakupyynnön web-palvelimelleni http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ leveysaste
    -2.23389 = $ pituusaste
    ja 20 = etäisyys, jonka haluan hakea

    Kuitenkin sinua kaavan avulla se hakee kaikki rivit db: stä

    $ results = DB :: select (DB :: raw (“SELECT *, ((acos (sin ((“ “. $ leveysaste.” * pi () / 180)) * sin ((lat * pi () / 180 )) + cos ((“. $ leveysaste.” * pi () / 180)) * cos ((lat * pi () / 180)) * cos (((“. $ pituusaste.” - lng) * pi ( ) / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) etäisyydellä merkkeistä, joilla on etäisyys> = “. $ Etäisyys));

    [{“Id”: 1, ”name”: ”Frankie Johnnie & Luigo Too”, ”address”: ”939 W El Camino Real, Mountain View, CA”, ”lat”: 37.386337280273, ”lng”: - 122.08582305908, ”Distance”: 16079.294719663}, {“id”: 2, ”name”: ”Amicin itärannikon pizzeria”, ”address”: ”790 Castro St, Mountain View, CA”, ”lat”: 37.387138366699, ”lng”: -122.08323669434, ”distance”: 16079.175940152}, {“id”: 3, ”name”: ”Kapp's Pizza Bar & Grill”, ”address”: ”191 Castro St, Mountain View, CA”, ”lat”: 37.393886566162, ”Lng”: - 122.07891845703, ”distance”: 16078.381373826}, {“id”: 4, ”name”: ”Round Table Pizza: Mountain View”, ”address”: ”570 N Shoreline Blvd, Mountain View, CA”, ”Lat”: 37.402652740479, ”lng”: - 122.07935333252, ”etäisyys”: 16077.420540582}, {“id”: 5, ”nimi”: ”Tony & Alban Pizza & Pasta”, ”osoite”: ”619 Escuela Ave, Vuori View, Kalifornia ”,” lat ”: 37.394012451172,” lng ”: - 122.09552764893,” distance ”: 16078.563225154}, {“ id ”: 6,” name ”:” Oreganon puupoltettu pizza ”,” osoite ”:” 4546 El Camino Real, Los Altos, Kalifornia ”,” lat ”: 37.401725769043,” lng ”: - 122.11464691162,” etäisyys ”: 16077.937560795}, {“ id ”: 7,” name ”:” Baarit ja grillit ”,” address ”:” 24 Whiteley Street, Manchester ”,” lat ”: 53.485118865967,” lng ”: - 2.1828699111938,” distance ”: 8038.7620112314}]

    Haluan hakea vain rivit 20 maililla, mutta se tuo kaikki rivit. Ole hyvä mitä teen väärin

Mitä mieltä olet?

Tämä sivusto käyttää Akismetiä roskapostin vähentämiseksi. Lue, miten kommenttitietosi käsitellään.