7

我正在使用 Phonegap 和 JQuery 创建一个移动应用程序。

该应用程序收集用户的经度和纬度并将它们存储在数据库中(使用 PHP 脚本 - Web 服务),并通过某种算法检测是否有流量。我需要的是从数据库中获取所有彼此靠近的经度和纬度值,例如在同一街道/200m 范围内。

假设您在数据库中有一个列表,其中 5 lon/lat 彼此靠近(在同一条街道 A 中),3 lon/lat 在某些街道 B 中彼此靠近,以及其他一些随机代表其他街道的用户. 谁能告诉我如何检测彼此接近的经度/纬度值?我将它们作为单独的值存储在 MySQL 数据库中的值,即一个字段用于经度,另一个用于纬度。

一旦我获得彼此靠近的经度/纬度,那么我需要找到街道 A 中的用户和街道 B 中的用户之间的中心点,以标记为交通拥堵(基于其他一些检测)。

4

1 回答 1

5

您应该研究 Haversine 公式。请看下面:

SELECT id, (3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance;

这将返回输入长/纬度对 25 英里范围内的所有记录。

于 2012-12-19T11:12:26.107 回答