4

好的,问题来了:我想向我的用户展示他附近最近的地理点。

我有大约 55.000 个可以显示的固定地理点。(我有所有的长/纬度)取决于用户位置(长/纬度)我想显示最近的 20 个地理点。

所以当然我可以计算所有 55.000 个地理点,看看在用户 lang/lat 的某个半径内是否有 20 个,然后对它们进行排名,但这在某种程度上是计算总是 55tsd 地理点的开销。

是否有可能将 5 英里/公里范围“添加”到用户的经纬度,并仅计算该半径内的距离?

我希望你明白我的意思。:) 谢谢

4

1 回答 1

0

如果计算所有点之间的距离需要太多时间,您可以仅通过纬度/经度(source_lat - target_lat)(source_lon - target_lon)之间的简单差异来缩小可能的点,并只取最近的点来计算距离。您可以使用公式来计算距离。

D = 60* 1.1515 * acos (sin(pi*y/180) * sin(pi*Y/180) +
                   cos(pi*y/180) * cos(pi*Y/180) * cos((z-Z) *pi / 180) 
                     )  * 180 / pi)

但是计算效率也取决于使用的数据库技术。

于 2014-02-20T13:16:10.447 回答