识别 10 英里逻辑范围内的地理位置
Identify geographical locations within 10 miles logic
我正要开始开发应用程序,但我坚持使用最有效的方式来完成任务。所以任何人都可以访问这个应用程序并说嘿我在这里!在地图上。他们的地理位置(经度、纬度)将用作一种标记。
现在,当用户访问此应用程序时,它将如何显示人们在 10 英里半径范围内去过的标记。当然,我可以使用 for 循环来滚动每个标记,但在更大的范围内,这是最有效的方法吗?如果有 50,000 个标记会怎么样。
然后我想为每个标记添加一个国家,这样它只会滚动浏览您所在国家/地区的标记,但即使那样我也必须滚动浏览每个标记,检查它们是否在同一个国家然后是位置,除非我为每个国家都建立了一个数据库,这似乎是错误的。
不寻找实际代码,只寻找现有应用程序如何执行此操作的逻辑,感谢您的任何建议:)
如果您的数据库具有 long
和 lat
的标准浮点索引(例如使用 MySQL),您可以 select 所有点,这些点在一定范围内经度和纬度间隔。为此,您应该首先计算,Delta_Longitude
和 Delta_Latitude
对应 10 英里(DeltaLongitude 取决于纬度)。结果集由以标记为中心的 正方形 上的所有点组成(因为正方形在球体上,所以它不是真正的正方形)。
这个查询大大缩小了 selection 的范围,现在为每个点计算 distance on a sphere 并再次过滤标记应该是可行的。
MongoDB 功能 geospatial indixes,完全符合您的要求。
我正要开始开发应用程序,但我坚持使用最有效的方式来完成任务。所以任何人都可以访问这个应用程序并说嘿我在这里!在地图上。他们的地理位置(经度、纬度)将用作一种标记。
现在,当用户访问此应用程序时,它将如何显示人们在 10 英里半径范围内去过的标记。当然,我可以使用 for 循环来滚动每个标记,但在更大的范围内,这是最有效的方法吗?如果有 50,000 个标记会怎么样。
然后我想为每个标记添加一个国家,这样它只会滚动浏览您所在国家/地区的标记,但即使那样我也必须滚动浏览每个标记,检查它们是否在同一个国家然后是位置,除非我为每个国家都建立了一个数据库,这似乎是错误的。
不寻找实际代码,只寻找现有应用程序如何执行此操作的逻辑,感谢您的任何建议:)
如果您的数据库具有 long
和 lat
的标准浮点索引(例如使用 MySQL),您可以 select 所有点,这些点在一定范围内经度和纬度间隔。为此,您应该首先计算,Delta_Longitude
和 Delta_Latitude
对应 10 英里(DeltaLongitude 取决于纬度)。结果集由以标记为中心的 正方形 上的所有点组成(因为正方形在球体上,所以它不是真正的正方形)。
这个查询大大缩小了 selection 的范围,现在为每个点计算 distance on a sphere 并再次过滤标记应该是可行的。
MongoDB 功能 geospatial indixes,完全符合您的要求。