Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Geolokalisierungs-SQL-Abfrage findet den genauen Standort nicht

Ich glaube, Sie haben in Ihrer ersten Abfrage die Längengrade bei der Subtraktion invertiert. Das sphärische Kosinusgesetz lautet:

d = acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(long2−long1))*R

Wenn lat1 durch tblcity.latitude ersetzt wird, muss long1 durch tblcity.longitude ersetzt werden. Ich glaube, Sie haben versehentlich long2 in Ihrer Abfrage ersetzt. Funktioniert dieser besser?

SELECT tblcity.city, tblcity.latitude, tblcity.longitude, 
truncate((degrees(acos( sin(radians(tblcity.latitude)) 
* sin(radians(45.266708)) 
+ cos(radians(tblcity.latitude)) 
* cos(radians(45.266708)) 
* cos(radians(-73.616257 - tblcity.longitude) ) ) ) 
* 69.09*1.6),1) as distance 
FROM tblcity HAVING distance < 10 ORDER BY distance desc 

Ich habe mir Ihre zweite Frage noch nicht angesehen, aber das hilft hoffentlich weiter.