2024-09-29 04:24:09 发布
网友
我有一个网站与有限数量的城市在数据库,需要显示用户最近的城市,他目前的位置。在
我可以通过maxmindapi获取位置,但是我想在数据库中获得离用户city最近的城市。在
例如,如果我在数据库中有这些城市:Los Angeles、San Francisco和{},并且我从其他城市访问,比如Miami,我应该会看到纽约市被选中,因为它在地理上是最近的。在
Los Angeles
San Francisco
Miami
什么是最好的方法来做到这一点快速和性能意识?在
您应该存储每个城市的大致纬度和经度,为用户计算纬度和经度,然后使用Haversine formula查找距离。它是用Javascript here实现的。maxmindapi应该提供纬度和经度。在
当你在数据库中添加一个城市时,会运行一段代码(离线),计算出离你所有城市最近的城市。您可以使用外文密钥将每个城市指向另一个城市作为其最近的城市。在
现在您已经预先计算好了所有内容,每当有一个live请求,使用一个城市的名称,您只需使用城市名称点击数据库,您就可以通过指定的foreignkey访问最近的城市。(城市-外国语-城市)
现在这将是非常快的,因为你已经预先计算了最近的城市离线,并可以返回结果,立即对每个现场请求。在
但是你打算多久增加一个城市?可能不经常。所以,离线预计算是很少见的,即使需要一点时间。对实时请求的响应非常快。(其他人已经推荐了计算距离的公式,所以我将跳过这一部分!)在
您应该存储每个城市的大致纬度和经度,为用户计算纬度和经度,然后使用Haversine formula查找距离。它是用Javascript here实现的。maxmindapi应该提供纬度和经度。在
当你在数据库中添加一个城市时,会运行一段代码(离线),计算出离你所有城市最近的城市。您可以使用外文密钥将每个城市指向另一个城市作为其最近的城市。在
现在您已经预先计算好了所有内容,每当有一个live请求,使用一个城市的名称,您只需使用城市名称点击数据库,您就可以通过指定的foreignkey访问最近的城市。(城市-外国语-城市)
现在这将是非常快的,因为你已经预先计算了最近的城市离线,并可以返回结果,立即对每个现场请求。在
但是你打算多久增加一个城市?可能不经常。所以,离线预计算是很少见的,即使需要一点时间。对实时请求的响应非常快。(其他人已经推荐了计算距离的公式,所以我将跳过这一部分!)在
相关问题 更多 >
编程相关推荐