Google maps 使用Google Maps API v3显示边界框内的标记

Google maps 使用Google Maps API v3显示边界框内的标记,google-maps,google-maps-api-3,gis,Google Maps,Google Maps Api 3,Gis,我想显示位于地图边界框内的标记列表。我有一个基本的实现,它截取地图的“bounds_changed”事件,并使用地图西南角和东北角的lat/long坐标向我的服务器发出AJAX请求。这适用于大多数场景,但是我发现如果用户向东/西移动太远,这个实现就会中断 例如,假设边界框最初是作为整个世界开始的(西南角:[-90,-180],西北角:[90180])。然后,如果用户向西平移180度,则边界框变为[-90,-360]/[90,0]。这中断了我的AJAX请求,因为即使用户仍然可以看到整个世界,我的数

我想显示位于地图边界框内的标记列表。我有一个基本的实现,它截取地图的“bounds_changed”事件,并使用地图西南角和东北角的lat/long坐标向我的服务器发出AJAX请求。这适用于大多数场景,但是我发现如果用户向东/西移动太远,这个实现就会中断

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


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

最简单的方法是在收到纬度和经度值时测试它们,如果它们大于“真实世界”的纬度和经度,只需确保得到它们的相应值,范围为经度[-90;90],经度[-180;180]

顺便说一句:如果你想省去所有的ajax调用,你可以用javascript来代替。google.maps.LatLngBounds类有一个名为contains的方法,用于检查给定的latlng是否在边界内。然后,在初始化站点时,只需将所有标记存储在一个数组中,然后在用户平移时对它们进行迭代,如果它们在当前边界内,则将其visible属性设置为true。可以通过在地图实例上调用getBounds()来获取当前边界


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

最简单的方法是在收到纬度和经度值时测试它们,如果它们大于“真实世界”的纬度和经度,您只需确保获得相应的值,其范围为经度[-90;90],经度[-180;180]

顺便说一句:如果你想省去所有的ajax调用,你可以用javascript来代替。google.maps.LatLngBounds类有一个名为contains的方法,用于检查给定的latlng是否在边界内。然后,在初始化站点时,只需将所有标记存储在一个数组中,然后在用户平移时对它们进行迭代,如果它们在当前边界内,则将其visible属性设置为true。可以通过在地图实例上调用getBounds()来获取当前边界

使用方法map.getBounds().contains()也可以解决您的问题,而不必担心用户是否移动太远,因为API会为您处理这个问题