2011-10-27 36 views
2

我需要返回一组从数据库中筛选记录其坐标是当前的地图范围内的范围内的坐标(map.getBounds())负荷数据库是地图上的

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

如果地图以非洲为中心,我目前的实施情况是有效的,但如果地图以相同的视角显示中国和加拿大,那么我的实施不起作用,因为太平洋的经度从积极变为消极。

关于如何准确实现这一点的任何建议?

+0

这不是一个专家,所以我宁愿评论而不是回答,是经度从积极转变为太平洋地区负值?然后,这将抛出界限。 –

+0

@RobHaupt。确切地说,这基本上是问题!我将使用Polyline来查看它是否实际上抛出了界限。 –

回答

3

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

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

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

  • 如果西南角的经度是比东北角的经度,不是一个点的范围内,如果有这两个经度和之间的经度两个角落之间的纬度。 (这可能是你所做的一切,这就是为什么它在条件属实的非洲工作的原因,但不是在太平洋范围内的东西)

  • 如果西南角的经度是更多比东北角的经度,比你的界限穿越0经度,你需要扭转的条件:一个点是在界限内,如果它的经度是而不是数字之间的西南角经度和经度东北角。

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