现在,当用户访问此应用时,它如何显示人们在半径10英里范围内的标记。当然我可以使用for循环来滚动每个标记,但是规模要大得多,这是最有效的方法吗?如果有50,000个标记怎么办?
然后我想为每个标记添加一个国家,这样它只会滚动您所在国家/地区的标记,但即使这样,我也必须滚动每个标记,检查它们是否在同一个国家/地区然后除非我为每个似乎错误的国家建立数据库,否则该位置。
没有找到实际代码只是关于现有应用程序如何执行此操作的逻辑,感谢任何建议:)
答案 0 :(得分:0)
如果您的数据库具有long
和lat
的标准浮点索引(例如使用MySQL),则可以选择所有在某些经度和纬度范围内的点。为此,您应首先计算,Delta_Longitude
和Delta_Latitude
对应10英里(DeltaLongitude取决于纬度)。结果集包含以标记为中心的 square 上的所有点(因为正方形在球体上,它实际上不是正方形)。
此查询通过一个很大的因素缩小了选择范围,现在为每个点计算distance on a sphere并再次过滤标记应该是可行的。
MongoDB功能geospatial indixes,它可以满足您的要求。