0

到目前为止,我已经做了一些阅读,我正处于十字路口。

我的情况是这样的:

  • 带有 lat/lng 值列表的表格(我们可以将它们视为“城市”),半径为
  • 包含运动值列表的表格,包括 lat/lng

我的要求是我返回移动列表并包括最近的城市(如果它在半径内)。到目前为止,我已经使用 PHP 中的半正弦公式为我返回的每条记录执行此操作,但它并不是特别有效。

我发现的两个选项是:
1/在 MySQL 中创建一个存储过程来执行 Haversine 的那一侧(类似于:Proximity Search
2/使用“边界框”方法来定位城市而不是圆形. 这不是一个大问题,并且可以简化 sql。

但是,在某些情况下,如果 lat 和 lng 为负数,则确定点是否位于左上角和右下角之间的典型逻辑将不起作用。在 PHP 中,为了解决这个问题,我会做一个快速的“如果”,我会检查左上角的 lat/lng 是否大于右下角,并根据结果使用 AND/OR。

4

1 回答 1

0

经过一些额外的阅读后,我在 SO 上发现了这个问题。

https://stackoverflow.com/a/5548877/1749630

这个答案正是我需要指出的正确方向。通过这种方式,我现在使用子选择来查找城市。

如果有人发布比这个更好的答案,我会标记它而不是这个:)

于 2012-12-05T12:31:01.737 回答