PHP at SQL: Kalkulahin o Query Mahusay na Circle Distansya Sa Pagitan ng Mga Punto ng Latitude at Longitude Sa Ang Haversine Formula

Haversine Formula - Kalkulahin ang Distansya ng Mahusay na Circle sa PHP o MySQL
Oras ng Pagbasa: 3 minuto

Ngayong buwan nag-program ako ng kaunti sa PHP at MySQL tungkol sa GIS. Nakalibot sa net, talagang nahihirapan akong maghanap ng ilan sa Mga kalkulasyong pangheograpiya upang mahanap ang distansya sa pagitan ng dalawang lokasyon kaya nais kong ibahagi ang mga ito dito.

Mapa ng Paglipad Europa Na May Mahusay na Distansya ng Circle

Ang simpleng paraan ng pagkalkula ng distansya sa pagitan ng dalawang puntos ay ang paggamit ng pormula na Pythagorean upang makalkula ang hypotenuse ng isang tatsulok (A² + B² = C²). Ito ay kilala bilang ang Ang layo ng Euclidean.

Ito ay isang kagiliw-giliw na pagsisimula ngunit hindi ito nalalapat sa Geography dahil ang distansya sa pagitan ng mga linya ng latitude at longitude ay hindi pantay na distansya hiwalay Habang papalapit ka sa ekwador, magkakalayo ang mga linya ng latitude. Kung gagamit ka ng ilang uri ng simpleng equation ng triangulation, maaari itong sukatin nang tumpak ang distansya sa isang lokasyon at labis na mali sa kabilang lugar, dahil sa kurbada ng Earth.

Mahusay na Distansya ng Circle

Ang mga ruta na nilakbay nang malayo sa paligid ng Earth ay kilala bilang Mahusay na Distansya ng Circle. Iyon ay ... ang pinakamaikling distansya sa pagitan ng dalawang puntos sa isang globo ay naiiba kaysa sa mga puntos sa isang patag na mapa. Pagsamahin iyon sa katotohanang ang mga linya ng latitude at longitude ay hindi equidistant ... at mayroon kang isang mahirap na kalkulasyon.

Narito ang isang kamangha-manghang paliwanag sa video kung paano gumagana ang Great Circles.

Ang Haversine Formula

Ang distansya gamit ang kurbada ng Earth ay isinasama sa Formula ng Haversine, na gumagamit ng trigonometry upang pahintulutan ang kurbada ng mundo. Kapag nahahanap mo ang distansya sa pagitan ng 2 mga lugar sa mundo (habang lumilipad ang uwak), ang isang tuwid na linya ay talagang isang arko.

Nalalapat ito sa flight ng hangin - nakita mo na ba ang tunay na mapa ng mga flight at napansin na naka-arko ang mga ito? Iyon ay dahil mas maikli itong lumipad sa isang arko sa pagitan ng dalawang puntos kaysa nang direkta sa lokasyon.

PHP: Kalkulahin ang Distansya sa Pagitan ng 2 Mga Punto ng Latitude at Longhitud

Anyways, narito ang pormula ng PHP para sa pagkalkula ng distansya sa pagitan ng dalawang puntos (kasama ang Mile vs. Kilometer conversion) na bilugan sa dalawang decimal na lugar.

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: Kinukuha ang Lahat ng Mga Rekord Sa Loob Ng Isang Saklaw Sa pamamagitan ng Pagkalkula ng Distansya Sa Mga Milya Gamit ang Latitude at Longitude

Posible ring gumamit ng SQL upang gumawa ng isang pagkalkula upang mahanap ang lahat ng mga talaan sa loob ng isang tukoy na distansya. Sa halimbawang ito, magtanong ako sa MyTable sa MySQL upang hanapin ang lahat ng mga tala na mas mababa sa o katumbas ng variable na $ distansya (sa Milya) sa aking lokasyon sa $ latitude at $ longitude:

Ang query para sa pagkuha ng lahat ng mga talaan sa loob ng isang tukoy layo sa pamamagitan ng pagkalkula ng distansya sa mga milya sa pagitan ng dalawang puntos ng latitude at longitude ay:

$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."

Kakailanganin mong ipasadya ito:

  • $ longitude - ito ay isang variable ng PHP kung saan ipinapasa ko ang longitude ng point.
  • $ latitude - ito ay isang variable ng PHP kung saan ipinapasa ko ang longitude ng point.
  • $ distansya - ito ang distansya na nais mong hanapin ang lahat ng mga tala na mas mababa o katumbas.
  • mesa - ito ang talahanayan ... gugustuhin mong palitan iyon sa iyong pangalan ng talahanayan.
  • latitud - ito ang larangan ng iyong latitude.
  • longitude - ito ang larangan ng iyong longitude.

SQL: Kinukuha ang Lahat ng Mga Rekord Sa Loob Ng Isang Saklaw Sa pamamagitan ng Pagkalkula ng Distansya Sa Kilometro Gamit ang Latitude at Longitude

At narito ang query ng SQL gamit ang mga kilometro sa MySQL:

$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."

Kakailanganin mong ipasadya ito:

  • $ longitude - ito ay isang variable ng PHP kung saan ipinapasa ko ang longitude ng point.
  • $ latitude - ito ay isang variable ng PHP kung saan ipinapasa ko ang longitude ng point.
  • $ distansya - ito ang distansya na nais mong hanapin ang lahat ng mga tala na mas mababa o katumbas.
  • mesa - ito ang talahanayan ... gugustuhin mong palitan iyon sa iyong pangalan ng talahanayan.
  • latitud - ito ang larangan ng iyong latitude.
  • longitude - ito ang larangan ng iyong longitude.

Ginamit ko ang code na ito sa isang platform ng pagmamapa ng enterprise na ginamit namin para sa isang tingiang tindahan na may higit sa 1,000 mga lokasyon sa buong Hilagang Amerika at maganda itong gumana.

76 Comments

  1. 1

    Maraming salamat sa pagbabahagi. Ito ay isang madaling kopya at i-paste ang trabaho at mahusay na gumagana. Na-save mo ako ng maraming oras.
    FYI para sa sinumang lumilipat sa C:
    dobleng deg2rad (dobleng deg) {return deg * (3.14159265358979323846 / 180.0); }

  2. 2

    Napakagandang piraso ng pag-post - gumana ng napakagandang - kailangan ko lamang palitan ang pangalan ng talahanayan na may hawak na lat-long. Gumagawa ito ng napakabilis sa .. Mayroon akong isang makatuwirang maliit na bilang ng mga lat-long (<400) ngunit sa palagay ko ay masusukat ito nang maayos. Magaling ding site - naidagdag ko lang ito sa aking del.icio.us account at babalik ako nang regular.

  3. 4
  4. 5

    Hinanap ko ang buong araw para sa mga kalkulasyon sa distansya at nahanap ang harversine algorithm, salamat sa iyo para sa pagbibigay ng halimbawa kung paano ito ilagay sa isang pahayag na sql. Salamat at pagbati, Daniel

  5. 8

    Sa palagay ko ang iyong SQL ay nangangailangan ng pagkakaroon ng pahayag.
    sa halip na SAAN ang distansya <= $ distansya na maaaring kailanganin mo
    gumamit ng pagkakaroon ng distansya <= $ distansya

    kung hindi man salamat sa pag-save sa akin ng isang bungkos ng oras at lakas.

  6. 10
  7. 11
  8. 12

    Maraming salamat sa pagbabahagi ng code na ito. Natipid ito sa akin ng maraming oras ng pag-unlad. Gayundin, salamat sa iyong mga mambabasa sa pagturo na ang isang pagkakaroon ng pahayag ay kinakailangan para sa MySQL 5.x. Napaka matulungin

  9. 14
  10. 15

    Kamusta,

    Isa pang tanong. Mayroon bang isang formula para sa mga string ng NMEA tulad ng isa sa ibaba?

    1342.7500, N, 10052.2287, E

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

    Salamat,
    Manloob

  11. 16

    Nalaman ko din na SAAN hindi gumana para sa akin. Pinalitan ito sa pagkakaroon at perpektong gumagana ang lahat. Sa una hindi ko binasa ang mga komento at muling isinulat ito gamit ang isang pugad na piliin. Parehong gagana ang pareho.

  12. 17
  13. 18

    Hindi kapani-paniwala na kapaki-pakinabang, maraming salamat! Nagkaroon ako ng ilang mga problema sa bagong "MAYROON", sa halip na "SAAN", ngunit nang mabasa ko ang mga komento dito (pagkatapos ng halos kalahating oras na paggiling ng aking ngipin sa pagkabigo = P), nakuha ko itong gumana nang maayos. Salamat ^ _ ^

  14. 19
  15. 20

    Tandaan na ang isang piling pahayag na tulad nito ay magiging sobrang computationally at samakatuwid ay mabagal. Kung mayroon kang maraming mga query, maaari nitong mabulok nang mabilis ang mga bagay.

    Ang isang hindi gaanong masidhing diskarte ay upang magpatakbo ng isang una (krudo) pumili gamit ang isang lugar ng SQUARE na tinukoy ng isang kinakalkula na distansya ie "pumili * mula sa tablename kung saan ang latitude sa pagitan ng lat1 at lat2 at longitude sa pagitan ng lon1 at lon2". lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, katulad ng lon. latdiff ~ = distansya / 111 (para sa km), o distansya / 69 para sa mga milya mula noong 1 degree ng latitude ay ~ 111 km (bahagyang pagkakaiba-iba dahil ang lupa ay bahagyang bilog, ngunit sapat para sa hangaring ito). londiff = distansya / (abs (cos (deg2rad (latitude)) * 111)) - o 69 para sa mga milya (maaari kang kumuha ng isang bahagyang mas malaking parisukat upang maituring ang mga pagkakaiba-iba). Pagkatapos kunin ang resulta niyan at pakainin ito sa radial select. Huwag kalimutan na account para sa labas ng mga hangganan koordinasyon - ibig sabihin ang saklaw ng katanggap-tanggap na longitude ay -180 hanggang +180 at ang saklaw ng katanggap-tanggap na latitude ay -90 hanggang +90 - kung sakaling tumakbo ang iyong latdiff o londiff sa labas ng saklaw na ito . Tandaan na sa karamihan ng mga kaso maaaring hindi ito naaangkop dahil nakakaapekto lamang ito sa mga kalkulasyon sa isang linya sa pamamagitan ng pasipiko na karagatan mula sa poste patungo sa poste, bagaman sumalubong ito sa bahagi ng chukotka at bahagi ng alaska.

    Ang nagawa namin sa pamamagitan nito ay isang makabuluhang pagbawas sa bilang ng mga puntos laban sa kung saan mo ginawa ang pagkalkula na ito. Kung mayroon kang isang milyong pandaigdigang mga puntos sa database na ibinahagi nang pantay-pantay at nais mong maghanap sa loob ng 100 km, kung gayon ang iyong unang (mabilis) na paghahanap ay isang lugar na 10000 sq km at marahil ay magbubunga ng 20 mga resulta (batay sa pamamahagi sa isang ibabaw na lugar ng halos 500M sq km), na nangangahulugang patakbuhin mo ang kumplikadong pagkalkula ng distansya ng 20 beses para sa query na ito sa halip na isang milyong beses.

    • 21

      Maliit na pagkakamali sa halimbawa ... na para sa loob ng 50 km (hindi 100) dahil tinitingnan namin ang "radius" ng aming… parisukat.

      • 22

        Kamangha-manghang payo! Talagang nagtrabaho ako sa isang developer na nagsulat ng isang pagpapaandar na hinila ang loob ng parisukat at pagkatapos ay isang recursive function na gumawa ng 'mga parisukat' sa paligid ng perimeter upang isama at ibukod ang natitirang mga puntos. Ang resulta ay isang napakabilis na resulta - maaari niyang suriin ang milyun-milyong puntos sa microseconds.

        Ang aking diskarte sa itaas ay tiyak na 'krudo' ngunit may kakayahang. Salamat ulit!

        • 23

          Doug,

          Sinusubukan kong gumamit ng MySQL at php upang suriin kung ang isang lat long point ay nasa loob ng isang polygon. Alam mo ba kung ang iyong kaibigan sa nag-develop ay nag-publish ng anumang mga halimbawa sa kung paano maisakatuparan ang gawaing ito. O may alam ka bang mabuting halimbawa. Salamat nang maaga

  16. 24

    Kumusta ang lahat ng ito ang aking pagsubok SQL pahayag:

    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

    at sinasabi sa akin ni Mysql ang distansya na iyon, ay hindi umiiral bilang isang haligi, maaari kong gamitin ang order sa pamamagitan ng, magagawa ko ito nang hindi SAAN, at ito ay gumagana, ngunit hindi kasama nito ...

  17. 26

    Magaling ito, subalit ito ay tulad ng paglipad ng mga ibon. Mahusay na subukan at isama ang google maps API sa ito kahit papaano (maaaring gumagamit ng mga kalsada atbp.) Upang makapagbigay ng ideya gamit ang ibang paraan ng transportasyon. Hindi pa rin ako makakagawa ng isang simulate na pagpapaandar ng pagsusubo sa PHP na maaaring mag-alok ng isang mahusay na solusyon sa problema sa naglalakbay na salesman. Ngunit sa palagay ko maaari kong magamit muli ang ilan sa iyong code upang magawa ito.

  18. 27
  19. 28

    Magandang artikulo! Natagpuan ko ang maraming mga artikulo na naglalarawan kung paano makalkula ang distansya sa pagitan ng dalawang puntos ngunit talagang hinahanap ko ang SQL snippet.

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

    2 araw ng pagsasaliksik upang sa wakas mahanap ang pahinang ito na malulutas ang aking problema. Mukhang mas mahusay kong mabasura ang aking WolframAlpha at magsipilyo sa aking matematika. Ang pagbabago mula saANAN sa MAYROON ay ang aking script sa pagkakasunud-sunod. SALAMAT

  25. 37
    • 38

      Salamat Georgi. Patuloy akong nakakuha ng hindi nahanap na halayo 'distansya'. Kapag binago ko na ang SAAN SA MAYUNIT gumana ito tulad ng isang alindog!

  26. 39

    Nais kong ito ang unang pahina na nakita ko dito. Matapos subukan ang maraming iba't ibang mga utos na ito lamang ang gagana nang maayos, at may kaunting mga pagbabago na kinakailangan upang magkasya sa aking sariling database.
    Salamat ng marami!

  27. 40

    Nais kong ito ang unang pahina na nakita ko dito. Matapos subukan ang maraming iba't ibang mga utos na ito lamang ang gagana nang maayos, at may kaunting mga pagbabago na kinakailangan upang magkasya sa aking sariling database.
    Salamat ng marami!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47

    Alam kong gumagana ang formula na ito, ngunit hindi ko makita kung saan isinasaalang-alang ang radius ng mundo. Maaari bang may isang nagpapaliwanag sa akin, mangyaring?

  34. 49
  35. 50

    Mahusay na bagay Douglas. Nasubukan mo na bang makuha ang intersection point na binigyan ng Long / Lat / Bearing ng dalawang puntos?

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

    salamat sa pag-post ng kapaki-pakinabang na artikulong ito,  
    ngunit sa ilang kadahilanan nais kong magtanong
    kung paano makuha ang distansya sa pagitan ng mga coord sa loob ng MySQL db at coords na ipinasok sa php ng ​​gumagamit?
    para sa mas malinaw na ilarawan:
    Ang 1.user ay kailangang magsingit ng [id] para sa pagpili ng tinukoy na data mula sa db at mga coord mismo ng gumagamit
    2. makuha ng php file ang target na data (coords) gamit ang [id] at pagkatapos ay kalkulahin ang distansya sa pagitan ng user at target point

    o maaari lamang makakuha ng distansya mula sa code sa ibaba?

    $ qry = “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) bilang distansya MULA sa `MyTable` WHERE distansya> =". $ Distansya. " >>>> Maaari ko bang "ilabas" ang distansya mula dito?
    Salamat ulit,
    Timmy S

    • 59
  41. 60

    ok, lahat ng sinubukan ko ay hindi gumagana. Ibig kong sabihin, kung ano ang mayroon akong mga gawa, ngunit ang mga distansya ay malayo.

    Maaari bang may makakita ng kung ano ang mali sa code na ito?

    kung (mag-isyu ($ _ POST ['isinumite'])) {$ z = $ _POST ['zipcode']; $ r = $ _POST ['radius']; echo "Mga resulta para sa". $ z; $ sql = mysql_query ("SELECT DISTINCT m.zipcode, m.MktName, m.LocAddSt, m.LocAddCity, m.LocAddState, m.x1, m.y1, m. napatunayan, z1.lat, z2.lon, z1. lungsod, z1.state MULA sa mrk m, zip z1, zip z2 SAAN m.zipcode = z1.zipcode AT z2.zipcode = $ z AT (3963 * acos (truncate (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 ") o mamatay (mysql_error ()); habang ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ row ['MktName']. ""; $ store = $ row ['LocAddSt']. ””; $ store. = $ row ['LocAddCity']. ”,“. $ row ['LocAddState']. ” “. $ Row ['zipcode']; $ latitude1 = $ row ['lat']; $ longitude1 = $ row ['lon']; $ latitude2 = $ row ['y1']; $ longitude2 = $ row ['x1']; $ city = $ row ['city']; $ state = $ row ['state']; $ dis = getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = distansya ($ lat1, $ lon1, $ lat2, $ lon2); $ verified = $ row ['verified']; kung ($ verified == '1') {echo “”; echo "". $ store. ""; echo $ dis. " milya ang layo"; echo ""; } iba pa {echo “”. $ store. ””; echo $ dis. " milya ang layo"; echo ""; }}}

    ang aking mga function.php code
    function getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ distansya = (sin (deg2rad ($ latitude1)) * sin (deg2rad ($ latitude2))) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ distansya = acos ($ distansya); $ distansya = rad2deg ($ distansya); $ distansya = $ distansya * 60 * 1.1515; switch ($ unit) {case 'Mi': masira; case 'Km': $ distansya = $ distansya * 1.609344; } pagbalik (bilog ($ distansya, 2)); }

    Salamat sa advance

  42. 61
  43. 62

    Hoy Douglas, mahusay na artikulo. Natagpuan ko ang iyong paliwanag ng mga heograpikong konsepto at ang code na talagang kawili-wili. Ang aking mungkahi lamang ay ang puwang at indent ang code para sa pagpapakita (tulad ng Stackoverflow, halimbawa). Naiintindihan ko na nais mong makatipid ng espasyo, ngunit ang maginoo na spacing ng code / indentation ay gagawing mas madali para sa akin, bilang isang programmer, na basahin at ihiwalay. Gayunpaman, ito ay isang maliit na bagay. Ipagpatuloy ang mahusay na gawain.

  44. 64
  45. 65

    dito habang ginagamit gamit ang pag-andar nakakakuha kami ng isang uri ng distansya..samantalang ginagamit ang query sa darating na iba pang uri ng distansya

  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    tila mas mabilis (MySQL 5.9) na gumamit ng dalawang beses ang pormula sa piliin at kung saan:
    $ formula = “(((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) ”;
    $ sql = 'SELECT *,'. $ formula. ' bilang distansya MULA sa talahanayan KUNG SAAN '.. $ formula.' <= '. $ distansya;

  51. 71
  52. 72

    Maraming salamat sa pagggupit ng artikulong ito. Napakatulong nito.
    Ang PHP ay nilikha noong una bilang isang simpleng platform ng scripting na tinatawag na "Personal na Home Page". Ngayon ang PHP (ang maikli para sa Hypertext Preprocessor) ay isang kahalili ng teknolohiyang Aktibo ng Mga Server ng Microsoft (ASP) na teknolohiya.

    Ang PHP ay isang bukas na mapagkukunang wika ng panig ng server na ginagamit para sa paglikha ng mga pabuong web page. Maaari itong mai-embed sa HTML. Karaniwang ginagamit ang PHP kasabay ng isang MySQL database sa mga web server ng Linux / UNIX. Marahil ito ang pinakatanyag na wika ng pag-script.

  53. 73

    Natagpuan ko ang solusyon sa itaas na hindi gumagana nang maayos.
    Kailangan kong baguhin sa:

    $ qqq = "SELECT *, (((acos (sin ((". $ latitude. "* pi () / 180)) * sin ((` latt` * pi () / 180)) + cos ((". $ latitude. “* pi () / 180)) * cos ((` latt` * pi () / 180)) * cos ((("$ longitude." - `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) bilang distansya MULA sa `register`“;

  54. 75
  55. 76

    Kumusta, mangyaring kakailanganin ko ang iyong tulong dito.

    Nag-request ako ng get sa aking web-server http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ latitude
    -2.23389 = $ longitude
    at 20 = ang distansya na nais kong kunin

    Gayunpaman gamit ang pormula sa iyo, kinukuha nito ang lahat ng mga hilera sa aking db

    $ mga resulta = DB :: pumili (DB :: raw ("SELECT *, (((acos (sin ((". $ latitude. "* pi () / 180)) * sin ((lat * pi () / 180 )) + cos ((". $ latitude." * pi () / 180)) * cos ((lat * pi () / 180)) * cos (((". $ longitude." - lng) * pi ( ) / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) bilang distansya MULA sa mga marker MAY distansya> = “. $ Distansya));

    [{“Id”: 1, ”name”: ”Frankie Johnnie & Luigo too”, ”address”: ”939 W El Camino Real, Mountain View, CA”, ”lat”: 37.386337280273, ”lng”: - 122.08582305908, ”Distansya”: 16079.294719663}, {“id”: 2, ”pangalan”: ”Amici's East Coast Pizzeria”, ”address”: ”790 Castro St, Mountain View, CA”, ”lat”: 37.387138366699, ”lng”: -122.08323669434, ”distansya”: 16079.175940152}, {“id”: 3, ”pangalan”: ”Kapp's Pizza Bar & Grill”, ”address”: ”191 Castro St, Mountain View, CA”, ”lat”: 37.393886566162, ”Lng”: - 122.07891845703, ”distansya”: 16078.381373826}, {“id”: 4, ”pangalan”: ”Round Table Pizza: Mountain View”, ”address”: ”570 N Shoreline Blvd, Mountain View, CA”, ”Lat”: 37.402652740479, ”lng”: - 122.07935333252, ”distansya”: 16077.420540582}, {“id”: 5, ”pangalan”: ”Tony & Alba's Pizza & Pasta”, ”address”: ”619 Escuela Ave, Mountain Tingnan, CA ”,” lat ”: 37.394012451172,” lng ”: - 122.09552764893,” distansya ”: 16078.563225154}, {“ id ”: 6,” pangalan ”:” Oregano's Wood-Fired Pizza ”,” address ”:” 4546 El Camino Real, Los Altos, CA ”,” lat ”: 37.401725769043,” lng ”: - 122.11464691162,” distansya ”: 16077.937560795}, {“ id ”: 7,” name ”:” The bar and grills ”,” address ”:” 24 Whiteley Street, Manchester ”,” lat ”: 53.485118865967,” lng ”: - 2.1828699111938,” distansya ”: 8038.7620112314}]

    Nais kong kunin ang mga hilera lamang na may 20 milya ngunit dinadala nito ang lahat ng mga hilera. Mangyaring ano ang mali kong ginagawa

Ano sa tingin ninyo?

Ang site na ito ay gumagamit ng Akismet upang mabawasan ang spam. Alamin kung paano naproseso ang data ng iyong komento.