我的地图对象上有以下监听器:
myMapObject.addListener('bounds_changed', function(){
mySearchBoxObject.setBounds(myMapObject.getBounds());
if(this.getZoom() == 14){
for(var i = 0; i < customInfoWindows.length; i++){
customInfoWindows[i].open(myMapObject, customMarkers[i]);
}
}
});
在缩放级别14,我会自动打开绑定到我放置在地图上的自定义标记的所有信息窗口。
有没有办法使用API提供的信息只打开我缩放的当前视图中的信息窗口?例如,如果我的地图上有20个标记/信息窗口,我只能在当前缩放视图中看到4个标记,我只想打开与这4个标记关联的4个信息窗口。
答案 0 :(得分:1)
在打开infowindow之前检查标记是否在边界内:
myMapObject.addListener('bounds_changed', function(){
mySearchBoxObject.setBounds(myMapObject.getBounds());
if(this.getZoom() == 14){
for(var i = 0; i < customInfoWindows.length; i++){
// check if is in bounds
if (myMapObject.getBounds().contains(customMarkers[i].getPosition()))
customInfoWindows[i].open(myMapObject, customMarkers[i]);
}
}
});
google.maps.Map.getBounds()方法返回google.maps.LatLngBounds()对象,该对象具有.contains
方法。
包含(latLng:LatLng | LatLngLiteral)
返回值:布尔值
如果给定的纬度/经度处于此范围内,则返回true。