Heim >Backend-Entwicklung >PHP-Tutorial >PHP sortiert nach Längen- und Breitengrad und filtert Entfernungssegmente nach Längen- und Breitengrad
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!