确定10英里范围内的地理位置

时间:2017-08-24 17:37:47

标签: geolocation

我即将开始开发一个应用程序,并坚持以最有效的方式完成任务。所以任何人都可以访问这个应用程序,并说嘿我在这里!在地图上。他们的地理位置(长,纬度)将被用作一种标记。

现在,当用户访问此应用时,它如何显示人们在半径10英里范围内的标记。当然我可以使用for循环来滚动每个标记,但是规模要大得多,这是最有效的方法吗?如果有50,000个标记怎么办?

然后我想为每个标记添加一个国家,这样它只会滚动您所在国家/地区的标记,但即使这样,我也必须滚动每个标记,检查它们是否在同一个国家/地区然后除非我为每个似乎错误的国家建立数据库,否则该位置。

没有找到实际代码只是关于现有应用程序如何执行此操作的逻辑,感谢任何建议:)

1 个答案:

答案 0 :(得分:0)

如果您的数据库具有longlat的标准浮点索引(例如使用MySQL),则可以选择所有在某些经度和纬度范围内的点。为此,您应首先计算,Delta_LongitudeDelta_Latitude对应10英里(DeltaLongitude取决于纬度)。结果集包含以标记为中心的 square 上的所有点(因为正方形在球体上,它实际上不是正方形)。

此查询通过一个很大的因素缩小了选择范围,现在为每个点计算distance on a sphere并再次过滤标记应该是可行的。

MongoDB功能geospatial indixes,它可以满足您的要求。