Kajy na anontanio ny halaviran'ny faribolana lehibe eo anelanelan'ny teboka amin'ny latitude sy ny latitude amin'ny fampiasana ny formula Haversine (Ohatra PHP, Python, MySQL, MSSQL)

Formula Haversine - Distance faribolana lehibe - PHP, Python, MySQL

Tamin'ity volana ity dia nandamina fandaharana somary kely tao amin'ny PHP sy MySQL momba ny GIS aho. Nitsangatsangana manodidina ny harato aho, tena sarotra tamiko ny nahita ny sasany tamin'ireny Kajy ara-jeografika hahitana ny elanelana misy eo amin'ny toerana roa ka tiako zaraina eto.

Sarintanin'ny sidina Eoropa miaraka amin'ny elanelana faribolana

Ny fomba tsotra fanaovana kajy ny elanelana misy teboka roa dia ny fampiasana ny formule Pythagorean mba hikajiana ny hypotenuse an'ny telozoro (A² + B² = C²). Izy io dia fantatra amin'ny hoe Halaviran'ny Euclidean.

Fanombohana mahaliana izany fa tsy mihatra amin'ny Jeografia satria ny elanelana misy ny latitude sy ny longitude dia tsy mitovy halavirana mitokana. Rehefa manakaiky ny ekoatera ianao dia mihalavitra ny tsipika latitude. Raha mampiasa karazana fampitoviana triangulation tsotra ianao dia mety handrefesana ny elanelan-tany araka ny marina amin'ny toerana iray izany ary diso be any amin'ny iray hafa, noho ny fihodin'ny Tany.

Halaviran'ny faribolana lehibe

Ireo zotra izay mandeha lavitra manodidina ny Tany dia fantatra amin'ny hoe Halaviran'ny faribolana lehibe. Izany hoe… ny elanelana fohy indrindra eo amin'ny teboka roa amin'ny baolina iray dia tsy mitovy amin'ny teboka eo amin'ny sarintany fisaka. Ampifandraiso amin'ny hoe tsy mitovy ny elanelan'ny latitude sy ny latitude… ary sarotra ny kajy.

Ity misy fanazavana video mahafinaritra momba ny fiasan'ny Great Circles.

Ny Formula Haversine

Ny halavirana mampiasa ny fihodinan'ny Tany dia tafiditra ao amin'ny Formula Haversine, izay mampiasa trigonometry hahafahana mamily ny tany. Rehefa mahita ny elanelana misy eo amin'ny toerana 2 eto an-tany ianao (rehefa manidina ny goaika) dia tsipika mahitsy dia tena arc.

Azo ampiharina amin'ny sidina an'habakabaka io - efa nijery ny sarintanin'ny sidina tena izy ve ianao ary nahatsikaritra fa misy andohalambo? Izany dia satria fohy kokoa ny manidina ao anaty andohalambo eo anelanelan'ny teboka roa noho ny mivantana amin'ilay toerana.

PHP: kajy ny elanelana misy eo amin'ny teboka 2 amin'ny latitude sy ny longitude

Ity ny raikipohy PHP amin'ny kajy ny elanelana misy teboka roa (miaraka amin'ny fiovam-po Mile vs. Kilometatra) voahodidin'ny teboka roa.

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)); 
}

Ny variables dia:

  • $Latitude1 – miovaova ho an'ny latitude toerana voalohany anao.
  • $Longitude1 – miovaova ho an'ny laharan'ny toeranao voalohany
  • $Latitude2 – miovaova ho an'ny latitude toerana faharoa.
  • $Longitude2 – miovaova ho an'ny laharan'ny toerana misy anao faharoa.
  • $unit - ny default an'arivony. Ity dia azo havaozina na ampandalovina toy ny kilaometatra.

Python: Kajy ny halavirana eo anelanelan'ny teboka 2 amin'ny Latitude sy Longitude

Na izany na tsy izany, ity ny raikipohy Python amin'ny kajy ny elanelana misy teboka roa (miaraka amin'ny fiovam-po Mile vs. Kilometatra) voahodidin'ny teboka roa. Fanomezana ho an'ny zanako lahy, Bill Karr izay mpahay siansa momba ny data OpenINSIGHTS, ho an'ny kaody.

from numpy import sin, cos, arccos, pi, round

def rad2deg(radians):
    degrees = radians * 180 / pi
    return degrees

def deg2rad(degrees):
    radians = degrees * pi / 180
    return radians

def getDistanceBetweenPointsNew(latitude1, longitude1, latitude2, longitude2, unit = 'miles'):
    
    theta = longitude1 - longitude2
    
    distance = 60 * 1.1515 * rad2deg(
        arccos(
            (sin(deg2rad(latitude1)) * sin(deg2rad(latitude2))) + 
            (cos(deg2rad(latitude1)) * cos(deg2rad(latitude2)) * cos(deg2rad(theta)))
        )
    )
    
    if unit == 'miles':
        return round(distance, 2)
    if unit == 'kilometers':
        return round(distance * 1.609344, 2)

Ny variables dia:

  • latitude1 – miovaova ho an'ny toerana misy anao voalohany Latitude.
  • longitude1 – miovaova ho an'ny toerana misy anao voalohany -jarahasina
  • latitude2 – miovaova ho an'ny toerana misy anao faharoa Latitude.
  • longitude2 – miovaova ho an'ny toerana misy anao faharoa -jarahasina.
  • vondrona - ny default an'arivony. Ity dia azo havaozina na ampandalovina toy ny kilaometatra.

MySQL: maka ny rakitsoratra rehetra ao anatin'ny elanelana amin'ny alàlan'ny kajy ny halavirana amin'ny kilaometatra amin'ny fampiasana Latitude sy Longitude

Azo atao koa ny mampiasa SQL hanao kajy hahitanao ireo rakitsoratra rehetra ao anatin'ny halavirana manokana. Amin'ity ohatra ity dia hanontany ny MyTable ao amin'ny MySQL aho mba hahitako ireo firaketana rehetra izay ambany na mitovy amin'ny halaviran-dàlana $ (amin'ny Miles) amin'ny toerako amin'ny $ latitude sy $ longitude:

Ny fangatahana famerenana ireo rakitsoratra rehetra ao anaty iray manokana lavitra amin'ny fikajiana ny halaviran'ny kilaometatra eo anelanelan'ny teboka roa sy ny longitude dia:

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

Mila ampanjifainao ity:

  • $-jarahasina - io dia fiovan'ny PHP izay andalovako ny longitude an'ilay teboka.
  • $ Mponina - io dia fiovan'ny PHP izay andalovako ny longitude an'ilay teboka.
  • $ lavitra - ity no elanelana tianao hahitanao ny firaketana rehetra ambany na mitovy aminy.
  • table - ity ny latabatra… tianao ho soloina amin'ny anaranao latabatra izany.
  • Latitude - ity no saha misy ny latitude misy anao.
  • -jarahasina - ity no sehatry ny laharam-pehintany.

MySQL: maka ny firaketana rehetra ao anatin'ny elanelana amin'ny alalan'ny kajy ny halavirana kilometatra amin'ny fampiasana Latitude sy Longitude

Ary ity ny fangatahana SQL mampiasa kilometatra ao amin'ny 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."

Mila ampanjifainao ity:

  • $-jarahasina - io dia fiovan'ny PHP izay andalovako ny longitude an'ilay teboka.
  • $ Mponina - io dia fiovan'ny PHP izay andalovako ny longitude an'ilay teboka.
  • $ lavitra - ity no elanelana tianao hahitanao ny firaketana rehetra ambany na mitovy aminy.
  • table - ity ny latabatra… tianao ho soloina amin'ny anaranao latabatra izany.
  • Latitude - ity no saha misy ny latitude misy anao.
  • -jarahasina - ity no sehatry ny laharam-pehintany.

Nampiasako ity kaody ity tamin'ny sehatra an-tsarintany an-tsarintany izay nampiasainay ho an'ny fivarotana antsinjarany misy toerana maherin'ny 1,000 manerana an'i Amerika Avaratra ary niasa tsara izany.

Microsoft SQL Server Distance Geographic: STDistance

Raha mampiasa Microsoft SQL Server ianao dia manolotra ny asany manokana izy ireo, STDistance amin'ny kajy ny elanelana misy eo amin'ny teboka roa amin'ny fampiasana ny karazana angona Jeografia.

DECLARE @g geography;  
DECLARE @h geography;  
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);  
SET @h = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);  
SELECT @g.STDistance(@h);  

Soso-kevitra ho an'i Manash Sahoo, VP sy Architect of Highbridge.

77 Comments

  1. 1

    Misaotra betsaka amin'ny fizarana. Asa mandika sy mametaka mora io ary miasa tsara. Namonjy ahy be dia be ianao.
    FYI ho an'izay mandefa mankany amin'ny C:
    double deg2rad(double deg) { fiverenana deg*(3.14159265358979323846/180.0); }

  2. 2

    Mahafinaritra be ny lahatsoratra - miasa tena tsara - tsy maintsy novana ny anaran'ny latabatra mitazona ny lat-long fotsiny aho. Mandeha haingana be izy io.. Manana lat-longs kely aho (<400) saingy heveriko fa mety tsara izany. Tranonkala mahafinaritra koa - vao nampidiriko tao amin'ny kaontiko del.icio.us ary hiverina tsy tapaka.

  3. 4
  4. 5
  5. 8

    Heveriko fa mila fanambarana misy ny SQL anao.
    fa tsy hoe WHERE distance <= $distance mety ilainao
    mampiasa HAVING distance <= $distance

    raha tsy izany dia misaotra noho ny namonjy ahy be dia be ny fotoana sy ny angovo.

  6. 10
  7. 11
  8. 12

    Misaotra betsaka nizara ity code ity. Namonjy ahy fotoana fampandrosoana betsaka izany. Ary koa, misaotra ny mpamaky anao nanamarika fa ilaina ny fanambarana HAVING ho an'ny MySQL 5.x. Tena manampy.

  9. 14
  10. 15
  11. 16

    Hitako ihany koa fa tsy niasa tamiko ny WHERE. Nanova azy ho HAVING ary mandeha tsara ny zava-drehetra. Tamin'ny voalohany dia tsy namaky ny fanehoan-kevitra aho ary namerina nanoratra izany tamin'ny alàlan'ny fisafidianana nested. Samy hiasa tsara izy roa.

  12. 17
  13. 18

    Tena manampy tokoa, misaotra betsaka! Nanana olana kely aho tamin'ny "MANANA", fa tsy hoe "AIZA", fa raha vao namaky ny fanehoan-kevitra teto aho (rehefa afaka antsasak'adiny teo ho eo ny nifiko noho ny fahasorenana =P), dia azoko tsara ilay izy. Misaotra ^_^

  14. 19
  15. 20

    Ataovy ao an-tsaina fa ny fanambarana voafantina toy izany dia ho mafy be amin'ny fikajiana ary noho izany dia miadana. Raha manana fanontaniana be dia be ianao, dia mety hanimba zavatra haingana izany.

    Ny fomba fiasa tsy dia mafimafy kokoa dia ny fampandehanana safidy voalohany (maotina) amin'ny alàlan'ny faritra SQUARE voafaritra amin'ny halavirana kajy izany hoe "safidio * amin'ny anaran'ny latabatra misy ny latitude eo anelanelan'ny lat1 sy lat2 ary ny latitude eo anelanelan'ny lon1 sy lon2". lat1 = targetlatitude - latdiff, lat2 = targetlatitude + latdiff, mitovy amin'ny lon. latdiff ~= halavirana / 111 (ho an'ny km), na halavirana/69 raha kilaometatra satria ny 1 degre amin'ny latitude dia ~ 111 km (fiovaova kely satria ny tany dia oval kely, saingy ampy ho an'io tanjona io). londiff = halavirana / (abs(cos(deg2rad(latitude))*111)) — na 69 amin'ny kilaometatra (azonao atao ny maka efamira kely lehibe kokoa mba hahitanao fiovana). Avy eo dia raiso ny vokatr'izany ary ampio amin'ny radial Select. Aza hadino fotsiny ny manisa ny koordinate ivelan'ny sisintany - izany hoe ny latitude ekena dia -180 hatramin'ny +180 ary ny latitude azo ekena dia -90 hatramin'ny +90 - raha toa ka mivoaka ivelan'io faritra io ny latdiff na londiff anao . Mariho fa amin'ny ankamaroan'ny tranga dia mety tsy azo ampiharina izany satria misy fiantraikany amin'ny kajy amin'ny tsipika mamakivaky ny ranomasimbe Pasifika manomboka amin'ny tsato-kazo mankany amin'ny tsato-kazo, na dia mifamatotra amin'ny ampahany amin'ny chukotka sy ny ampahany amin'ny alaska aza.

    Ny zava-bitanay amin'izany dia fampihenana be ny isan'ny teboka anaovanao io kajy io. Raha manana teboka maneran-tany an-tapitrisany ianao ao amin'ny angon-drakitra zaraina mitovitovy ary te hikaroka ao anatin'ny 100 km ianao, dia amin'ny faritra 10000 km² ny fikarohanao voalohany (haingana) ary mety hamokatra valiny 20 eo ho eo (mifototra amin'ny fizarana mitovy amin'ny iray). velaran-tany manodidina ny 500M kilometatra toradroa), izay midika fa in-20 ny kajy halavirana sarotra ho an'ity fanontaniana ity fa tsy in-tapitrisa.

    • 21
      • 22

        Torohevitra mahafinaritra! Niara-niasa tamin'ny mpamorona iray aho izay nanoratra asa nanintona ny kianja anatiny ary avy eo dia asa miverimberina izay nanao 'kisary' manodidina ny vakim-paritra mba hampidirana sy hanilihana ireo teboka sisa. Vokatra haingana dia haingana ny vokatra - afaka nanombantombana teboka an-tapitrisany tao anatin'ny microseconds izy.

        Ny fomba fiasako etsy ambony dia azo antoka fa 'tsy misy dikany' fa mahavita. Mamerina ny fisaorana anao!

        • 23

          Doug,

          Nanandrana nampiasa mysql sy php aho mba hanombanana raha toa ka ao anatin'ny polygon ny teboka lava lava. Fantatrao ve raha namoaka ohatra momba ny fomba hanatanterahana an'io asa io ny namanao developer. Sa fantatrao ohatra tsara. Misaotra mialoha.

  16. 24

    Salama daholo, ity no fanambarana SQL nataoko:

    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

    ary ny Mysql dia milaza amiko fa ny halavirana, tsy misy toy ny tsanganana, afaka mampiasa ny baiko aho, afaka manao izany aho tsy misy WHERE, ary miasa izany, fa tsy miaraka aminy ...

  17. 26

    Tena tsara izany, saingy toy ny manidina ny vorona. Tena tsara ny manandrana sy mampiditra ny Google Maps API amin'izany (mety amin'ny fampiasana lalana sns.) Mba hanome hevitra fotsiny amin'ny fampiasana endrika fitaterana hafa. Mbola tsy maintsy manao asa annealing simulated amin'ny PHP aho izay afaka manolotra vahaolana mahomby amin'ny olan'ny mpivarotra mandehandeha. Saingy heveriko fa mety ho azoko ampiasaina indray ny kaody sasany hanaovana izany.

  18. 27
  19. 28
  20. 29
  21. 30
  22. 31
  23. 32
  24. 36

    Fikarohana 2 andro mba hahitana farany ity pejy ity izay mamaha ny olako. Toa tsara kokoa ny manaisotra ny WolframAlpha-ko ary mandalina ny matematika. Ny fiovan'ny WHERE mankany HAVING dia manana ny script-ko amin'ny filaharan'ny asa. MISAOTRA ANAO

  25. 37
  26. 39

    Maniry aho fa ity no pejy voalohany hitako tamin'ity. Taorian'ny nanandramana didy maro samihafa dia io ihany no miasa araka ny tokony ho izy, ary miaraka amin'ny fanovana kely ilaina mba hifanaraka amin'ny angon-drakitra manokana.
    Misaotra betsaka!

  27. 40

    Maniry aho fa ity no pejy voalohany hitako tamin'ity. Taorian'ny nanandramana didy maro samihafa dia io ihany no miasa araka ny tokony ho izy, ary miaraka amin'ny fanovana kely ilaina mba hifanaraka amin'ny angon-drakitra manokana.
    Misaotra betsaka!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47
  34. 49
  35. 50
  36. 52
  37. 53
  38. 55
  39. 56
  40. 58

    misaotra anao nandefa ity lahatsoratra mahasoa ity,  
    fa noho ny antony dia mba te hanontany aho
    Ahoana ny fomba hahazoana ny elanelana misy ny coords ao anaty mysql db sy ny coords ampidirina amin'ny php ataon'ny mpampiasa?
    mba hamaritana mazava kokoa:
    1. Ny mpampiasa dia tsy maintsy mampiditra [id] amin'ny fisafidianana ny angona voatondro avy amin'ny db sy ny fandrindran'ny mpampiasa azy
    2. Ny rakitra php dia mahazo ny angona kendrena (coords) mampiasa [id] ary kajy ny elanelana misy eo amin'ny mpampiasa sy ny teboka kendrena.

    sa afaka maka halavirana fotsiny amin'ny code etsy ambany?

    $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) toy ny halavirana AVY AMIN'NY `MyTable` AIZA ny halavirana >= “.$distance.” >>>>afaka "manala" ny elanelana eto ve aho?
    mamerina ny fisaorana anao,
    Timmy S

  41. 60

    ok, tsy mandeha daholo izay nandramako. Ny tiako holazaina dia ny zavatra ananako miasa, fa ny halavirana lavitra.

    Misy afaka mahita ny tsy mety amin'ity code ity ve?

    if(isset($_POST['natolotra'])){ $z = $_POST['zipcode']; $r = $_POST['radius']; echo "Valin'ny ".$z; $sql = mysql_query(“MIFIDY M.ZIPcode, m.MktName,m.LocAddSt,m.LocAddCity,m.LocAddState,m.x1,m.y1,m.verified,z1.lat,z2.lon,z1. city,z1.state AVY amin'ny mrk m, zip z1, zip z2 AIZA m.zipcode = z1.zipcode SY z2.zipcode = $z SY (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 ") na maty (mysql_error()); while($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 = halavirana($lat1, $lon1, $lat2, $lon2); $verified = $row['verified']; if($verified == '1'){ echo “”; echo “”.$store.””; echo $dis . "kilometatra miala"; ako ""; } else { echo “”.$store.””; echo $dis . "kilometatra miala"; ako ""; } }}

    my functions.php code
    function getnew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { $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 'Mi': tapaka; tranga 'Km' : $distance = $distance * 1.609344; } miverina (boribory ($distance,2)); }

    Misaotra mialoha

  42. 61
  43. 62

    Hey Douglas, lahatsoratra mahafinaritra. Hitako fa tena mahaliana ny fanazavanao momba ny foto-kevitra ara-jeografika sy ny kaody. Ny hany soso-kevitro dia ny hameno ny habaka sy indent ny kaody ho aseho (toy ny Stackoverflow, ohatra). Takatro fa te hitsitsy habaka ianao, fa ny elanelan'ny code / indentation mahazatra dia manamora kokoa ahy, amin'ny maha-programa ahy, mamaky sy manaparitaka. Na izany na tsy izany, zavatra kely izany. Tohizo ny asa lehibe.

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

    toa haingana kokoa (mysql 5.9) ny mampiasa indroa ny formula amin'ny safidy ary aiza:
    $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.' toy ny halaviran'ny latabatra AIZA '..$formula.' <= '.$distance;

  51. 71
  52. 72

    Misaotra betsaka amin'ny fanetezana ity lahatsoratra ity. Tena manampy tokoa.
    PHP dia noforonina tamin'ny voalohany ho sehatra fanoratana tsotra antsoina hoe "Pejin-trano manokana". Amin'izao fotoana izao, ny PHP (ny fanafohezana ny Hypertext Preprocessor) dia solon'ny teknolojia Active Server Pages (ASP) an'ny Microsoft.

    PHP dia fiteny mivelatra amin'ny lafiny server izay ampiasaina amin'ny famoronana pejy web mavitrika. Azo ampidirina amin'ny HTML izany. Ny PHP dia matetika ampiasaina miaraka amin'ny angon-drakitra MySQL amin'ny mpizara tranonkala Linux/UNIX. Io angamba no fiteny malaza indrindra amin'ny fanoratana soratra.

  53. 73

    Hitako fa tsy mandeha tsara ny vahaolana etsy ambony.
    Mila miova ho:

    $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) toy ny halaviran'ny `register` “;

  54. 75
  55. 76

    Salama, azafady fa tena mila ny fanampianao momba izany aho.

    Nanao fangatahana get tamin'ny mpizara tranonkalako aho http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    53.47792 = $latitude
    -2.23389 = $longitude
    ary 20 = ny halavirana tiako alaina

    Na izany aza, amin'ny fampiasana anao formula, dia mamerina ny andalana rehetra ao amin'ny db-ko

    $results = DB::select(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) toy ny halavirana avy amin'ny marika MANANA halavirana >= “.$distance ));

    [{“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”:”Amici's East Coast 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”,”adiresy”:”570 N Shoreline Blvd, Mountain View, CA”, ”lat”:37.402652740479,”lng”:-122.07935333252,”distance”:16077.420540582},{“id”:5,”name”:”Tony & Alba's Pizza & Pasta”,”adiresy”:”619 Escuela Ave. View, CA”,”lat”:37.394012451172,”lng”:-122.09552764893,”distance”:16078.563225154},{“id”:6,”name”:”Oregano's Wood-Fired Pizza”,”adiresy”:”4546 El Camino Real, Los Altos, CA”,”lat”:37.401725769043,”lng”:-122.11464691162,”distance”:16077.937560795},{“ id”:7,”name”:”The bars and grills”,”address”:”24 Whiteley Street, Manchester”,”lat”:53.485118865967,”lng”:-2.1828699111938,”distance”:8038.7620112314}]

    Te haka andalana misy 20 kilaometatra fotsiny aho fa mitondra ny laharana rehetra. Azafady, inona no tsy mety ataoko

  56. 77

    Mitady fanontaniana mitovitovy amin'izany aho fa nisondrotra kely - raha fintinina dia ny fanakambanana ny koordinate rehetra ao anatin'ny 2 kilaometatra amin'ny fandrindrana tsirairay ary avy eo manisa ny isan'ny koordinate ao amin'ny vondrona tsirairay ary tsy mamoaka afa-tsy vondrona iray izay manana fandrindrana be indrindra - na dia manana vondrona mihoatra ny iray ianao amin'ireo vondrona izay manana koordinate betsaka indrindra - avoahy fotsiny ny vondrona kisendrasendra avy amin'ireo vondrona manana isa lehibe indrindra -

Inona ny hevitrao?

Mampiasa Akismet ity tranonkala ity mba hampihenana spam. Fantaro ny fomba amoahanao ny angona fanehoanao.