请帮助我,我不明白这个查询中的3959是什么,以及这个查询的逻辑是什么。
$sql = 'SELECT `Zip`, `City`, `State`, `Lat`, `Long`,
( 3959 * acos( cos( radians("%s") ) * cos( radians( `Lat` ) ) * cos( radians( `Long` ) -
radians("%s") ) + sin( radians("%s") ) * sin( radians( `Lat` ) ) ) ) AS distance
FROM Zips
HAVING distance < "%s"
ORDER BY distance LIMIT 0 , 2';发布于 2012-12-10 14:28:08
此逻辑是使用经度和纬度查找位置,请参阅Finding Locations with MySQL
上面的逻辑使用Haversine Formula来查找球体内的位置
发布于 2012-12-10 14:28:27
3959是以英里为单位的地球半径。该查询计算表中输入的经度和纬度与经度和纬度之间的距离(以英里为单位),并选择最接近的点。没有那么多的逻辑,这是纯粹的数学。由于距离本身不是输出,您甚至可以省略3959的乘法,仍然可以得到相同的结果。
https://stackoverflow.com/questions/13795963
复制相似问题