使用Google Maps API v3在边框内显示标记

时间:2011-04-26 18:46:28

标签: google-maps google-maps-api-3 gis

我想显示位于地图边界框内的标记列表。我有一个基本的实现工作,拦截地图的“bounds_changed”事件,并使用地图的西南角和东北角的纬度/经度坐标向我的服务器发出AJAX请求。这适用于大多数情况,但是我发现如果用户向东/向西太远,这种实现会中断。

例如,假设边界框最初开始是整个世界(西南角:[ - 90,-180],西北角:[90,180])。然后,如果用户向西平移180度,则边界框变为[-90,-360] / [90,0]。这打破了我的AJAX请求,因为即使用户仍然可以看到整个世界,任何具有经度的标记>我的数据库查询不会返回0。

处理此问题的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

执行此操作的最简单方法是在收到纬度和经度值时测试它们,如果它们大于“真实世界”纬度和经度,则只需确保在范围内获取相应的值即可[-90; 90°经度和[-180; 180]经度。

作为旁注:如果你想要保留所有的ajax调用,你可以用javascript代替它。 google.maps.LatLngBounds类有一个名为contains的方法,用于检查给定的latlng是否在边界内。然后,您可以在初始化网站时将所有标记存储在数组中,然后在用户平移时迭代它们,并在它们位于当前边界内时将其visible属性设置为true。您可以通过在地图实例上调用getBounds()来获取当前边界。

使用方法map.getBounds()。contains()也可以解决您的问题,而不必担心用户是否过分,因为API会为您处理。

相关问题