다른 솔루션과 함께 들으려면- "bounds_changed 이벤트를 듣고 새 확대 / 축소를 설정하십시오"접근 방식이 안정적으로 작동하지 않는다는 것을 알았습니다. fitBounds
맵이 완전히 초기화되기 전에 전화 를 걸었고 fitBounds
경계 및 줌 레벨을 변경 하기 전에 초기화로 인해 리스너를 사용하는 bounds_changed 이벤트가 발생했다고 생각 합니다. 나는이 코드로 끝났는데, 지금까지 작동하는 것 같습니다.
// If there's only one marker, or if the markers are all super close together,
// `fitBounds` can zoom in too far. We want to limit the maximum zoom it can
// use.
//
// `fitBounds` is asynchronous, so we need to wait until the bounds have
// changed before we know what the new zoom is, using an event handler.
//
// Sometimes this handler gets triggered by a different event, before
// `fitBounds` takes effect; that particularly seems to happen if the map
// hasn't been fully initialized yet. So we don't immediately remove the
// listener; instead, we wait until the 'idle' event, and remove it then.
//
// But 'idle' might happen before 'bounds_changed', so we can't set up the
// removal handler immediately. Set it up in the first event handler.
var removeListener = null;
var listener = google.maps.event.addListener(map, 'bounds_changed', () => {
console.log(map.getZoom());
if (map.getZoom() > 15) {
map.setZoom(15);
}
if (!removeListener) {
removeListener = google.maps.event.addListenerOnce(map, 'idle', () => {
console.log('remove');
google.maps.event.removeListener(listener);
});
}
});