从地图边界内的数据库加载坐标

本文关键字:数据库 加载 坐标 地图 边界 | 更新日期: 2023-09-27 18:12:29

我需要从数据库返回一组经过过滤的记录,这些记录的坐标在当前地图的边界内(map.getBounds())

根据谷歌地图API v3,这是可以做客户端使用他们的API和函数"containsLatLng(latlng:GLatLng)",但我想在服务器端做这个实现,然后只是返回这个坐标内的记录。

如果地图以非洲为中心,我当前的实现可以工作,但如果地图在同一视图中显示中国和加拿大,则我的实现无法工作,因为经度在太平洋中从正变为负。

对于如何准确地实现这一点有什么建议吗?

从地图边界内的数据库加载坐标

在Google Maps中,latlnbounds对象构造函数取矩形边界的西南角和东北角。

知道一个点是西南角而不是东南角对解决问题至关重要。

如果你知道一个点是西南角,另一个点是东北角,那么比较两个角的经度。你的算法将像这样工作:

  • 如果西南角的经度小于东北角的经度,则一个点的经度在这两个经度之间,纬度在两个纬度之间,则该点在边界内。(这可能就是你所做的一切,这就是为什么它在非洲有效,因为条件是真实的,但不是在跨越太平洋的东西。)

  • 如果西南角的经度大于东北角的经度,那么您的边界越过0经度,您需要反转这个条件:如果一个点的经度不是,它的经度在西南角的经度和东北角的经度之间

为简单起见,因为它几乎肯定是正确的,我假设你永远不会有一个覆盖北极或南极的界限。(在谷歌地图中,我甚至不知道你是否可以有这样的边界)