Google Maps API V3 - 在当前视图界限中打开附加到标记的所有信息窗口?

时间:2016-10-06 15:15:32

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

我的地图对象上有以下监听器:

    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个信息窗口。

1 个答案:

答案 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。