【发布时间】:2012-12-05 11:59:44
【问题描述】:
到目前为止,我已经完成了一些阅读,我正处于十字路口。
我的情况是这样的:
- 带有半径的 lat/lng 值列表(我们可以将这些值称为“城市”)的表格
- 包含移动值列表的表格,包括纬度/经度
我的要求是返回移动列表并包括最近的城市(如果它在半径内)。到目前为止,我已经使用 PHP 中的半正弦公式为我返回的每条记录执行此操作,但它并不是特别有效。
我发现的两个选择是:
1/ 在 MySQL 中创建一个存储过程来执行 Haversine 的那一侧(像这样:Proximity Search)
2/ 使用“边界框”方法来定位城市而不是圆形。这不是一个大问题,并且可以简化 sql。
但是,在某些情况下,如果 lat 和 lng 为负数,则确定点是否位于左上角和右下角之间的典型逻辑将不起作用。在 PHP 中,为了解决这个问题,我会做一个快速的“如果”,我会检查左上角的 lat/lng 是否大于右下角,并根据结果使用 AND/OR。
【问题讨论】:
标签: php mysql geolocation