2010-12-22 56 views
4

我有一个数据库中有限数量的城市的网站,并且需要向用户显示他当前位置最近的城市。获取用户就近城市的最佳方式? Python/Django

我可以通过MaxMind API获取位置,但是我想在我的数据库中找到离用户城市最近的城市。

例如,如果我在数据库中的这些城市:Los AngelesSan FranciscoNew York City,和我是从其他城市的访问像Miami,我应该看到NYC选择,因为它是地理上最接近的。

这种快速性能感知的最佳方式是什么?

+2

近似的经度和纬度(只是度数,而不是分钟或秒)+距离公式。请参阅http://www.movable-type.co.uk/scripts/latlong.html – 2010-12-22 18:25:51

+0

@ S.Lott做到了。 – 2010-12-22 18:30:28

回答

7

您应该存储每个城市的近似经度和纬度,计算用户的经度和纬度(度),然后使用Haversine formula找到距离。它在Javascript here中实现。 MaxMind API应该会给你经纬度。

0

是否有这样的感觉,无论您何时在数据库中添加一个城市,都会运行一段代码(脱机),以计算您所拥有的每个城市最近的城市。您可以让每个城市指向另一个城市,并将其指定为其最近的城市,并带有一个外键

现在您已经预先计算了一切,无论何时出现实时请求和城市名称,只需用城市名称打开数据库,就可以通过您指定的外键访问最近的城市。 (city --- foreignkey ---> city)

现在,由于您已经预先计算离线最近的城市并且可以在每个实时请求中立即返回结果,所以速度会非常快。

但是您打算多久添加一个城市?可能不会那么频繁。因此,即使需要一点时间,离线预计算也很少见。但现场请求的响应速度非常快。 (其他人已经推荐使用公式来计算距离,所以我将跳过那部分!)

相关问题