Heim  >  Artikel  >  Backend-Entwicklung  >  PHP sortiert nach Längen- und Breitengrad und filtert Entfernungssegmente nach Längen- und Breitengrad

PHP sortiert nach Längen- und Breitengrad und filtert Entfernungssegmente nach Längen- und Breitengrad

不言
不言Original
2018-07-05 11:17:053522Durchsuche

Dieser Artikel befasst sich hauptsächlich mit der PHP-Sortierung nach Längen- und Breitengrad und dem Filtern von Entfernungssegmenten nach Längen- und Breitengrad. Jetzt kann ich ihn mit Ihnen teilen.

SQL 语句:
select location.* from (select *,round(6378.138*2*asin(sqrt(pow(sin( (36.668530*pi()/180-px_lat*pi()/180)/2),2)+cos(36.668530*pi()/180)*cos(px_lat*pi()/180)* pow(sin( (117.020359*pi()/180-px_lon*pi()/180)/2),2)))*1000)  as distance from bsx_training where (px_state = 1) and (type_id != '') and (((px_lat >= 27.683290277922) and (px_lat 008b0d02af5e880524b45e5a244da4e2= 105.81826766053) and (px_lon c724a36253c1c16c07655eb6352208fd= {["minLat"]}) and (px_lat 71322fc885cb7c46ea769eb6fff02986= {['minLng']}) and (px_lon 4615b1a699ff3838c5fbc301a9257e34= {[0]}) and (location.distance 12b943c66ffff944f0d062a653df4b62") !==  = (">", .= " and (location.distance >= {[1]})"

Um die Sortierung nach Längen- und Breitengrad zu implementieren

Rufen Sie einfach distance_sql(lon1,lat1,lon2,lat2) direkt auf, um die Parameter und als Alias ​​zu übergeben B. als Entfernung, und dann wird in der SQL-Anweisung nach Entfernung sortiert

Wenn das Filterentfernungssegment 1000 Meter – 2000 Meter Daten ist

Dann verschachteln Sie die SQL-Anweisung SQL

/**
 * 
 * @param  $latitude    纬度    
 * @param  $longitude    经度
 * @param  $raidus        半径范围(单位:米)
 * @return multitype:number */
 function getAround($latitude,$longitude,$raidus)
{    
$PI = 3.14159265;    
$degree = (24901*1609)/360.0;    
$dpmLat = 1/$degree;    
$radiusLat = $dpmLat*$raidus;    
$minLat = $latitude - $radiusLat;    
$maxLat = $latitude + $radiusLat;    
$mpdLng = $degree*cos($latitude * ($PI/180));    
$dpmLng = 1 / $mpdLng;    
$radiusLng = $dpmLng*$raidus;    
$minLng = $longitude - $radiusLng;    
$maxLng = $longitude + $radiusLng;    
return array (minLat=>$minLat, maxLat=>$maxLat, minLng=>$minLng, maxLng=>$maxLng);
}

Wenn Sie SQL nach der nächstgelegenen Position sortieren möchten

select *.loation from (select *,round(6378.138*2*asin(sqrt(pow(sin( (36.668530*pi()/180-px_lat*pi()/180)/2),2)+cos(36.668530*pi()/180)*cos(px_lat*pi()/180)* pow(sin( (117.020359*pi()/180-px_lon*pi()/180)/2),2)))*1000) as distance) from table  location where (location.distance >= 1000) and (location.distance <= 2000))
rreee

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für alle, die etwas lernen, hilfreich sein wird Bitte achten Sie auf die chinesische PHP-Website!

Verwandte Empfehlungen:

Einführung in die Curl-Anforderung anderer Schnittstellen in der PHP-Schnittstelle

Erste Einführung in die PHP-Multiprozessprogrammierung

Das obige ist der detaillierte Inhalt vonPHP sortiert nach Längen- und Breitengrad und filtert Entfernungssegmente nach Längen- und Breitengrad. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn