处理fitBounds并不会在地图上显示所有标记

时间:2019-05-26 16:50:47

标签: google-maps google-maps-markers fitbounds

我正在Google地图上设置标记,获取位置,扩展范围并在地图上调用fitBounds

我正在这样添加他们:

let bounds = new google.maps.LatLngBounds();
for (i = 0; i < markers.length; i++)
{
    bounds.extend(markers[i]);
}
map.fitBounds(bounds);

大约一半时间,地图未显示所有标记。它们确实很靠近边缘,但是在边缘之外,只有拖动地图或缩小1级,我才能看到丢失的标记。

我想添加一个事件侦听器,如果不是所有标记都可见,它将将缩放比例降低1级:

// Do other stuff to set up map
var map = new google.maps.Map(mapElement, myOptions);
// This is needed to set the zoom after fitbounds, 

google.maps.event.addListener(map, 'zoom_changed', function() {
    zoomChangeBoundsListener = 
        google.maps.event.addListener(map, 'bounds_changed', function(event) {
            if (notAllMarkersAreVisible && this.initialZoom == true) {
                // Change max/min zoom here
                this.setZoom(this.getZoom() - 1);
                this.initialZoom = false;
            }
        google.maps.event.removeListener(zoomChangeBoundsListener);
    });
});
map.initialZoom = true;
map.fitBounds(bounds);

1)我的主要问题是如何确切知道标记是否可见,这意味着我需要设置为notAllMarkersAreVisible条件吗?

2)这是处理以下情况的通用约定吗?在fitBounds之后并非所有标记都可见?

0 个答案:

没有答案