PHP agus SQL: Fad an Chiorcail Mhóir a Ríomh nó a Cheistiú idir Pointí Domhanleithead agus Domhanfhad leis an bhFoirmle Haversine

Foirmle Haversine - Ríomh Fad Mórchiorcail le PHP nó MySQL

An mhí seo bhí mé ag clárú go leor i PHP agus MySQL maidir le GIS. Ag sní timpeall an líontáin, bhí am crua agam i ndáiríre ag fáil cuid de na Ríomhaireachtaí geografacha chun an fad idir dhá shuíomh a fháil agus mar sin theastaigh uaim iad a roinnt anseo.

Léarscáil Eitilte Eoraip le Fad Mór Ciorcail

Is é an bealach simplí chun fad idir dhá phointe a ríomh ná an fhoirmle Pythagorean a úsáid chun hipiteiripe triantáin a ríomh (A² + B² = C²). Tugtar an Fad Euclidean.

Tús suimiúil é sin ach ní bhaineann sé le Tíreolaíocht ós rud é go bhfuil an fad idir línte domhanleithead agus domhanfhad ní fad comhionann óna chéile. De réir mar a théann tú níos gaire don mheánchiorcal, éiríonn línte domhanleithead níos faide óna chéile. Má úsáideann tú cothromóid triantánach shimplí de chineál éigin, féadfaidh sé an fad a thomhas go cruinn in aon áit amháin agus an-mícheart san áit eile, mar gheall ar chuaire an Domhain.

Fad Ciorcal Mór

Tugtar na bealaí a thaistealaítear achair fhada timpeall an Domhain Fad Ciorcal Mór. Is é sin ... tá an fad is giorra idir dhá phointe ar sféar difriúil ná na pointí ar mhapa comhréidh. Comhcheangail é sin leis an bhfíric nach bhfuil na línte domhanleithead agus domhanfhad comhlántach ... agus tá ríomh deacair agat.

Seo míniú físe iontach ar an gcaoi a n-oibríonn Great Circles.

Foirmle Haversine

Tá an fad a úsáideann cuaire an Domhain ionchorpraithe sa Foirmle Haversine, a úsáideann triantánacht chun cuaire an domhain a cheadú. Nuair a bhíonn an fad idir 2 áit ar domhan á fháil agat (de réir mar a bhíonn an beanna ag eitilt), is stua líne dhíreach i ndáiríre.

Tá sé seo infheidhmithe maidir le heitilt aeir - ar fhéach tú riamh ar mhapa iarbhír na n-eitiltí agus ar thug tú faoi deara go bhfuil siad droimneach? Sin toisc go bhfuil sé níos giorra eitilt i áirse idir dhá phointe ná go díreach chuig an áit.

PHP: Ríomh an Fad idir 2 Phointe Domhanleithead agus Domhanfhad

Ar aon chaoi, seo an fhoirmle PHP chun an fad idir dhá phointe a ríomh (mar aon le tiontú Mile vs Ciliméadar) arna shlánú go dtí dhá ionad de dheachúlacha.

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: Gach Taifead a Aisghabháil laistigh de Raon Trí Fad a Ríomh i Mílte ag Úsáid Domhanleithead agus Domhanfhad

Is féidir freisin SQL a úsáid chun ríomh a dhéanamh chun na taifid go léir a fháil laistigh d’achar ar leith. Sa sampla seo, táim chun MyTable a cheistiú i MySQL chun na taifid go léir atá níos lú ná nó cothrom le fad athraitheach $ (i Míle) a fháil go dtí mo shuíomh ag $ domhanleithead agus $ domhanfhad:

An cheist maidir leis na taifid go léir a aisghabháil laistigh de shonra achar tríd an bhfad i mílte idir dhá phointe domhanleithead agus domhanfhad a ríomh tá:

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

Beidh ort é seo a shaincheapadh:

  • $ domhanfhad - athróg PHP é seo agus mé ag dul thar domhanfhad an phointe.
  • $ domhanleithead - athróg PHP é seo agus mé ag dul thar domhanfhad an phointe.
  • $ achar - is é seo an fad ar mhaith leat na taifid go léir a fháil níos lú nó cothrom leo.
  • tábla - seo an tábla ... beidh tú ag iarraidh d'ainm tábla a chur ina ionad.
  • domhanleithead - seo réimse do domhanleithead.
  • domhanfhad - seo réimse do dhomhanfhad.

SQL: Gach Taifead a Aisghabháil laistigh de Raon Trí Fad a Ríomh i gCiliméadair ag Úsáid Domhanleithead agus Domhanfhad

Agus seo an cheist SQL ag úsáid ciliméadar i 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."

Beidh ort é seo a shaincheapadh:

  • $ domhanfhad - athróg PHP é seo agus mé ag dul thar domhanfhad an phointe.
  • $ domhanleithead - athróg PHP é seo agus mé ag dul thar domhanfhad an phointe.
  • $ achar - is é seo an fad ar mhaith leat na taifid go léir a fháil níos lú nó cothrom leo.
  • tábla - seo an tábla ... beidh tú ag iarraidh d'ainm tábla a chur ina ionad.
  • domhanleithead - seo réimse do domhanleithead.
  • domhanfhad - seo réimse do dhomhanfhad.

D'úsáid mé an cód seo in ardán mapála fiontar a d'úsáidamar le haghaidh siopa miondíola le níos mó ná 1,000 áit ar fud Mheiriceá Thuaidh agus d'oibrigh sé go hálainn.

76 Comments

  1. 1

    Go raibh míle maith agat as roinnt. Post éasca cóipeála agus greamaigh a bhí anseo agus oibríonn sé go hiontach. Shábháil tú a lán ama dom.
    FYI do dhuine ar bith atá ag taisteal chuig C:
    deg2rad dúbailte (dúbailte deg) {filleadh deg * (3.14159265358979323846 / 180.0); }

  2. 2

    Píosa postála an-deas - d’oibrigh sé an-deas - ní raibh orm ach ainm an tábla a raibh an lat-long air a athrú. Oibríonn sé go gasta chun .. Tá líon réasúnta beag lat-long agam (<400) ach is dóigh liom go scálafadh sé seo go deas. Suíomh deas freisin - tá mé díreach tar éis é a chur le mo chuntas del.icio.us agus seiceálfaidh mé ar ais go rialta.

  3. 4
  4. 5

    Chuardaigh mé an lá ar fad le haghaidh ríomhanna achair agus fuair mé an algartam harversine, a bhuíochas leat as an sampla a thabhairt ar conas é a chur i ráiteas sql. Go raibh maith agat agus beannachtaí, Daniel

  5. 8

    Sílim go bhfuil ráiteas ag teastáil ó do SQL.
    in ionad ÁIT <= $ achar a d'fhéadfadh a bheith ag teastáil uait
    bain úsáid as Achar <= $ achar

    murach sin go raibh maith agat as dornán ama agus fuinnimh a shábháil dom.

  6. 10
  7. 11
  8. 12

    Go raibh maith agat an méid sin as an gcód seo a roinnt. Shábháil sé a lán ama forbartha dom. Chomh maith leis sin, buíochas le do léitheoirí as a chur in iúl go bhfuil ráiteas TAR ÉIS riachtanach do MySQL 5.x. An-chabhrach.

  9. 14
  10. 15

    Dia duit,

    Ceist eile. An bhfuil foirmle ann le haghaidh teaghráin NMEA cosúil leis an gceann thíos?

    1342.7500, N, 10052.2287, E.

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

    Go raibh maith agat,
    Harry

  11. 16

    Fuair ​​mé amach freisin nár oibrigh ÁIT dom. D'athraigh sé go TAR ÉIS agus oibríonn gach rud go foirfe. Ar dtús níor léigh mé na tráchtanna agus rinne mé iad a athscríobh ag úsáid neadaithe. Oibreoidh an bheirt acu go breá.

  12. 17
  13. 18

    Go hiontach cabhrach, go raibh míle maith agat! Bhí roinnt fadhbanna agam leis an “TAR ÉIS” nua, seachas “ÁIT”, ach nuair a léigh mé na tráchtanna anseo (tar éis thart ar leath uair an chloig de mo chuid fiacla a mheilt i frustrachas = P), fuair mé ag obair go deas é. Go raibh maith agat ^ _ ^

  14. 19
  15. 20

    Coinnigh i gcuimhne go mbeidh ráiteas roghnaithe mar sin an-dian ó thaobh ríomhaireachta de agus dá bhrí sin beidh sé mall. Má tá go leor de na ceisteanna sin agat, féadfaidh sé rudaí a bhogadh síos go gasta.

    Cur chuige i bhfad níos déine ná an chéad rogha (amh) a reáchtáil ag baint úsáide as limistéar SQUARE arna shainiú ag fad ríofa ie “roghnaigh * ón ainm tábla nuair a bhíonn domhanleithead idir lat1 agus lat2 agus domhanfhad idir lon1 agus lon2”. lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, cosúil le lon. latdiff ~ = achar / 111 (do km), nó fad / 69 ar feadh míle ós rud é go bhfuil 1 chéim domhanleithead ~ 111 km (éagsúlacht bheag ós rud é go bhfuil an talamh beagán ubhchruthach, ach leordhóthanach chun na críche seo). londiff = fad / (abs (cos (deg2rad (domhanleithead)) * 111)) - nó 69 ar feadh míle (is féidir leat cearnóg atá beagán níos mó a thógáil d’fhonn cuntas a thabhairt ar athruithe). Ansin tóg an toradh air sin agus cuir isteach sa roghnú gathacha é. Ná déan dearmad cuntas a thabhairt ar chomhordanáidí lasmuigh de theorainneacha - ie is é an raon domhanfhad inghlactha -180 go +180 agus is é -90 go +90 an raon domhanleithead inghlactha - ar eagla go rithfeadh do latdiff nó londiff lasmuigh den raon seo . Tabhair faoi deara go bhféadfadh sé nach mbeadh sé seo infheidhmithe i bhformhór na gcásanna toisc nach ndéanann sé difear ach do ríomhanna thar líne tríd an aigéan suaimhneach ó chuaille go cuaille, cé go dtrasnaíonn sé cuid de chukotka agus cuid de alasca.

    Is é atá á chur i gcrích againn leis seo ná laghdú suntasach ar líon na bpointí a ndéanann tú an ríomh seo ina gcoinne. Má tá milliún pointe domhanda agat sa bhunachar sonraí arna dháileadh go cothrom cothrom agus gur mhaith leat cuardach a dhéanamh laistigh de 100 km, ansin is é an chéad chuardach (tapa) atá agat ná limistéar 10000 km cearnach agus is dócha go dtabharfaidh sé thart ar 20 toradh (bunaithe ar dháileadh cothrom thar a achar dromchla de thart ar 500M km cearnach), rud a chiallaíonn go ritheann tú an ríomh achair chasta 20 uair don cheist seo in ionad milliún uair.

    • 21

      Botún beag sa sampla… bheadh ​​sé sin laistigh de 50 km (ní 100) ós rud é go bhfuilimid ag féachaint ar “gha” ár… chearnóg.

      • 22

        Comhairle iontach! D'oibrigh mé i ndáiríre le forbróir a scríobh feidhm a tharraing an chearnóg istigh agus ansin feidhm athchúrsach a rinne 'cearnóga' timpeall an imlíne chun na pointí atá fágtha a áireamh agus a eisiamh. Toradh thar a bheith gasta a bhí mar thoradh air - d’fhéadfadh sé na milliúin pointí a mheas i micrea-chumhachtaí.

        Is cinnte go bhfuil mo chur chuige thuas ‘amh’ ach ábalta. Go raibh maith agat arís!

        • 23

          Doug,

          Bhí mé ag iarraidh mysql agus php a úsáid chun a mheas an bhfuil pointe lat fada laistigh de pholagán. An bhfuil a fhios agat ar fhoilsigh do chara forbróra aon samplaí ar conas an tasc seo a chur i gcrích. Nó an bhfuil aon samplaí maithe ar eolas agat. Go raibh maith agat roimh ré.

  16. 24

    Dia duit gach duine is é seo mo ráiteas SQL tástála:

    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

    agus tá Mysql ag rá liom nach bhfuil an fad sin ann mar cholún, is féidir liom ordú a úsáid leis, is féidir liom é a dhéanamh gan ÁIT, agus oibríonn sé, ach ní leis…

  17. 26

    Tá sé seo go hiontach, áfach tá sé díreach mar a bhíonn na héin ag eitilt. Bheadh ​​sé iontach iarracht a dhéanamh API léarscáileanna google a ionchorprú chuige seo ar bhealach éigin (b’fhéidir bóithre srl a úsáid.) Níl ort ach smaoineamh a thabhairt ag úsáid cineál difriúil iompair. Níl feidhm insamhalta annealaithe déanta agam fós i PHP a bheadh ​​in ann réiteach éifeachtach a thairiscint ar fhadhb an díoltóra taistil. Ach sílim go mb’fhéidir go mbeidh mé in ann cuid de do chód a athúsáid chun é sin a dhéanamh.

  18. 27
  19. 28

    Alt maith! Fuair ​​mé a lán alt ag cur síos ar conas an fad idir dhá phointe a ríomh ach bhí an snippet SQL á lorg agam i ndáiríre.

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

    2 lá taighde chun an leathanach seo a fháil a réitíonn mo fhadhb. Is cosúil gur fearr liom mo WolframAlpha a scriosadh agus mo chuid matamaitice a fheabhsú. Tá mo script ag obair i gceart ón athrú ó ÁIT go TAR ÉIS. GO RAIBH MAITH AGAT

  25. 37
  26. 39

    Is mian liom gurbh é seo an chéad leathanach a fuair mé air seo. Tar éis go leor orduithe éagsúla a thriail ba é seo an t-aon cheann a d’oibrigh i gceart, agus gan mórán athruithe ag teastáil chun mo bhunachar sonraí féin a fheistiú.
    Go raibh maith agat a lán!

  27. 40

    Is mian liom gurbh é seo an chéad leathanach a fuair mé air seo. Tar éis go leor orduithe éagsúla a thriail ba é seo an t-aon cheann a d’oibrigh i gceart, agus gan mórán athruithe ag teastáil chun mo bhunachar sonraí féin a fheistiú.
    Go raibh maith agat a lán!

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

    Tá a fhios agam go n-oibríonn an fhoirmle seo, ach ní fheicim cá gcuirtear ga an domhain san áireamh. An féidir le duine ar bith léargas a thabhairt dom, le do thoil?

  34. 49
  35. 50
  36. 52

    Go raibh maith agat Douglas, is é an Fiosrúchán SQL go díreach a bhí ag teastáil uaim, agus shíl mé go mbeadh orm é a scríobh mé féin. Shábháil tú mé ó uaireanta cuar foghlama domhanleithead, b’fhéidir!

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

    go raibh maith agat as an alt cabhrach seo a phostáil,  
    ach ar chúis éigin ba mhaith liom ceist a chur
    conas an fad idir cordaí taobh istigh de mysql db agus cordaí a chur isteach sa php ag an úsáideoir?
    le haghaidh cur síos níos soiléire:
    Caithfidh 1.user [id] a chur isteach chun sonraí sonraithe a roghnú ó db agus ó chordaí an úsáideora féin
    2. Faigheann an comhad php na sonraí sprice (cordaí) ag úsáid [id] agus ansin ríomh an fad idir an t-úsáideoir agus an spriocphointe

    nó an féidir leat fad a fháil ón gcód thíos?

    $ qry = “SELECT *, (((acos (sin ((“. $ domhanleithead. ”* pi () / 180)) * sin ((` Domhanleithead` * pi () / 180)) + cos ((“. $ domhanleithead. "* pi () / 180)) * cos ((` Domhanleithead` * pi () / 180)) * cos (((". $ domhanfhad." - `Domhanfhad`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) mar achar Ó `MyTable` ÁIT>>". $ Achar. " >>>> an féidir liom an fad a thógáil amach as seo?
    Go raibh maith agat arís,
    Timmy S.

    • 59

      is cuma liom, tá a fhios agam conas a oibríonn an “fheidhm” i php
      $ dis = getDistanceBetweenPointsNew ($ userLati, $ userLongi, $ lati, $ longi, $ unit = 'Km')
      go raibh míle maith agat!! 

  41. 60

    ceart go leor, níl gach rud a rinne mé iarracht ag obair. Ciallaíonn mé, na hoibreacha atá agam, ach tá na faid i bhfad uainn.

    An bhféadfadh duine ar bith a fheiceáil cad atá cearr leis an gcód seo?

    más rud é (isset ($ _ POST ['curtha isteach'])) {$ z = $ _POST ['zipcode']; $ r = $ _POST ['ga']; macalla “Torthaí do“. $ 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. cathrach, z1.state Ó mrk m, zip z1, zip z2 ÁIT m.zipcode = z1.zipcode AGUS z2.zipcode = $ z AGUS (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 ") nó faigh bás (mysql_error ()); cé go ($ row = mysql_fetch_array ($ sql)) {$ store1 = $ row ['MktName']. ""; $ store = $ as a chéile ['LocAddSt']. ""; $ store. = $ row ['LocAddCity']. ",". $ row ['LocAddState']. " ". $ Row ['zipcode']; $ domhanleithead1 = $ as a chéile ['lat']; $ domhanfhad1 = $ as a chéile ['lon']; $ domhanleithead2 = $ as a chéile ['y1']; $ domhanfhad2 = $ as a chéile ['x1']; $ cathair = $ as a chéile ['cathair']; $ state = $ row ['luaigh']; $ dis = getnew ($ domhanleithead1, $ domhanfhad1, $ domhanleithead2, $ domhanfhad2, $ aonad = 'Mi'); // $ dis = achar ($ lat1, $ lon1, $ lat2, $ lon2); $ fíoraithe = $ as a chéile ['fíoraithe']; más rud é ($ fíoraithe == '1') {macalla ""; macalla “”. $ stór. ””; macalla $ dis. "Míle (míle) ar shiúl"; macalla “”; } eile {macalla "". $ stór. ""; macalla $ dis. "Míle (míle) ar shiúl"; macalla “”; }}}

    mo chód functions.php
    getnew feidhme ($ domhanleithead1, $ domhanfhad1, $ domhanleithead2, $ domhanfhad2, $ aonad = 'Mi') {$ theta = $ domhanfhad1 - $ domhanfhad2; $ achar = (sin (deg2rad ($ domhanleithead1)) * sin (deg2rad ($ domhanleithead2))) + (cos (deg2rad ($ domhanleithead1)) * cos (deg2rad ($ domhanleithead2)) * cos (deg2rad ($ theta)) ); $ achar = acos ($ achar); $ achar = rad2deg ($ achar); $ achar = $ achar * 60 * 1.1515; lasc ($ aonad) {cás 'Mi': briseadh; cás 'Km': $ achar = $ achar * 1.609344; } tuairisceán (babhta ($ achar, 2)); }

    Go raibh maith agat roimh ré

  42. 61
  43. 62

    Hey Douglas, alt iontach. Fuair ​​mé do mhíniú ar na coincheapa geografacha agus an cód an-spéisiúil. Is é an t-aon mholadh a bheadh ​​agam ná an cód taispeána a chur ar spás agus a fhleascú (cosúil le Stackoverflow, mar shampla). Tuigim go dteastaíonn uait spás a chaomhnú, ach d’fhágfadh sé go mbeadh sé níos éasca domsa, mar ríomhchláraitheoir, léamh agus easaontú a dhéanamh de ghnáth spásáil / eangú cód traidisiúnta. Cibé ar bith, is rud beag é sin. Coinnigh leis an obair iontach.

    • 63

      Go raibh maith agat! Rinne mé an post a mhodhnú beagán ... ach glacann na cothromóidí an oiread sin spáis agus tá siad chomh fada sin nach bhfuil mé cinnte go gcuidíonn sé an iomarca.

  44. 64
  45. 65

    anseo agus muid ag úsáid le feidhm táimid ag fáil cineál amháin achair .. agus muid ag úsáid fiosrúcháin faoi chineál eile achair atá le teacht

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

    is cosúil go bhfuil sé níos tapa (mysql 5.9) an fhoirmle a úsáid faoi dhó sa roghnú agus cá háit:
    $ foirmle = “(((acos (sin ((“. $ domhanleithead. ”* pi () / 180)) * sin ((` Domhanleithead` * pi () / 180)) + cos ((“. $ domhanleithead. ”* Pi () / 180)) * cos ((` Domhanleithead` * pi () / 180)) * cos (((“. $ Domhanfhad.” - `Domhanfhad`) * pi () / 180))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) ”;
    $ sql = 'SELECT *,'. $ foirmle. ' mar achar ón tábla ÁIT '.. $ foirmle.' <= '. $ achar;

  51. 71
  52. 72

    Go raibh maith agat as an alt seo a lomadh. Tá sé an-chabhrach.
    Cruthaíodh PHP ar dtús mar ardán scripteála simplí darb ainm “Leathanach Baile Pearsanta”. Sa lá atá inniu ann is rogha eile é PHP (an ceann gairid do Réamhphróiseálaí Hipirtéacs) de theicneolaíocht Leathanaigh Freastalaí Gníomhacha (ASP) Microsoft.

    Is teanga foinse oscailte taobh an fhreastalaí é PHP a úsáidtear chun leathanaigh ghréasáin dhinimiciúla a chruthú. Is féidir é a neadú i HTML. Úsáidtear PHP de ghnáth i gcomhar le bunachar sonraí MySQL ar fhreastalaithe gréasáin Linux / UNIX. Is dócha gurb í an teanga scriptithe is mó éilimh uirthi.

  53. 73

    Fuair ​​mé thuas nach raibh an réiteach ag obair i gceart.
    Ní mór dom athrú go:

    $ qqq = “SELECT *, (((acos (sin ((“. $ domhanleithead. ”* pi () / 180)) * sin ((` latt` * pi () / 180)) + cos ((”. $ domhanleithead. "* pi () / 180)) * cos ((` latt` * pi () / 180)) * cos (((". $ domhanfhad." - `longt`) * pi () / 180) ))) * 180 / pi ()) * 60 * 1.1515) mar achar ó `clár`";

  54. 75

    go raibh maith agat a dhuine uasail ag dul go foirfe .. ach tá ceist amháin agam más mian liom aschur a dhéanamh gan pointe deachúil ansin cad is féidir liom a dhéanamh ..?

    Go raibh maith agat roimh ré.

  55. 76

    Dia duit, le do thoil beidh do chabhair de dhíth orm i ndáiríre.

    Rinne mé iarratas faighte chuig mo fhreastalaí gréasáin http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $ domhanleithead
    -2.23389 = $ domhanfhad
    agus 20 = an fad ba mhaith liom a aisghabháil

    Ach an fhoirmle seo á húsáid agat, déanann sí na sraitheanna go léir i mo db a aisghabháil

    $ results = DB :: roghnaigh (DB :: amh (“SELECT *, (((acos (sin ((“. $ domhanleithead. ”* pi () / 180)) * sin ((lat * pi () / 180 )) + cos ((“. $ domhanleithead.” * pi () / 180)) * cos ((lat * pi () / 180)) * cos (((“. $ domhanfhad.” - lng) * pi ( ) / 180)))) * 180 / pi ()) * 60 * 1.1515 * 1.609344) mar achar Ó mharcóirí A BHFUIL an fad> = “. $ Fad));

    [{“Id”: 1, ”ainm”: “Frankie Johnnie & Luigo Too”, “seoladh”: ”939 W El Camino Real, Mountain View, CA”, ”lat”: 37.386337280273, ”lng”: - 122.08582305908, "Achar": 16079.294719663}, {"id": 2, "ainm": "Pizzeria Cósta Thoir Amici", "seoladh": "790 Sráid Castro, Mountain View, CA", "lat": 37.387138366699, "lng": -122.08323669434, “achar”: 16079.175940152}, {“id”: 3, ”ainm”: “Bar & Grill Pizza Kapp”, “seoladh”: ”191 Castro St, Mountain View, CA”, “lat”: 37.393886566162, "Lng": - 122.07891845703, "achar": 16078.381373826}, {"id": 4, "ainm": "Pizza Bord Cruinn: Mountain View", "seoladh": "570 N Shoreline Blvd, Mountain View, CA", "Lat": 37.402652740479, "lng": - 122.07935333252, "achar": 16077.420540582}, {"id": 5, "ainm": "Pizza & Pasta Tony & Alba", "seoladh": "619 Escuela Ave, Mountain Amharc, CA ”,“ lat ”: 37.394012451172,“ lng ”: - 122.09552764893,“ achar ”: 16078.563225154}, {“ id ”: 6,” ainm ”:“ Pizza Adhmaid Adhmaid Oregano ”,“ seoladh ”:” 4546 El Camino Real, Los Altos, CA ”,“ lat ”: 37.401725769043,” lng ”: - 122.11464691162,“ achar ”: 16077.937560795}, {“ id ”: 7,” ainm ”:“ Na barraí agus na greillí ”,“ seoladh ”:” 24 Sráid Whiteley, Manchain ”,“ lat ”: 53.485118865967,” lng ”: - 2.1828699111938,“ achar ”: 8038.7620112314}]

    Ba mhaith liom díreach sraitheanna le 20 míle a aisghabháil ach tugann sé na sraitheanna go léir. Le do thoil, cad atá á dhéanamh agam mícheart

Cad é do bharúil?

Úsáideann an suíomh seo Akismet chun spam a laghdú. Foghlaim conas a dhéantar próiseáil ar do chuid tráchta.