到目前为止,我已经完成了一些阅读,而且我处于十字路口。
我的情况是这样的:
我的要求是我返回移动列表并包括最近的城市(如果它在半径范围内)。到目前为止,我使用PHP中的hasrsine公式为我返回的每条记录执行此操作,但效率不高。
我找到的两个选项是:
1 /在MySQL中创建一个存储过程来执行那边的Haversine(如下所示:Proximity Search)
2 /使用“边界框”方法定位城市而不是圆圈。这不是一个大问题,并且可以简化sql。
然而,在某些情况下,如果lat和lng处于负数,则确定点位于左上角和右下角之间的典型逻辑将不起作用。在PHP中,要解决这个问题,我会快速“if”,我会检查左上角的lat / lng是否大于右下角,并根据结果使用AND / OR。
答案 0 :(得分:0)
经过一些额外的阅读后,我在SO上找到了这个问题。
https://stackoverflow.com/a/5548877/1749630
这个答案正是我需要指出的正确方向。通过这种方式,我现在使用子选择来查找城市。
如果有人发布了比这个更好的答案,我会标记而不是这个:)