В моем случае я просто хотел установить уровень масштабирования на единицу меньше, чем то, что карты Google выбрали для меня во время fitBounds. Цель состояла в том, чтобы использовать fitBounds, но также убедиться, что под инструментами карты не было никаких маркеров и т. Д.
Моя карта создается рано, и затем ряд других динамических компонентов страницы имеют возможность добавлять маркеры, вызывая fitBounds после каждого добавления.
Это начальный блок, в котором изначально был создан объект карты ...
var mapZoom = null;
Затем это добавляется к каждому блоку, в который добавляется маркер, непосредственно перед вызовом map.fitBounds ...
google.maps.event.addListenerOnce(map, 'bounds_changed', function() {
if (mapZoom != map.getZoom()) {
mapZoom = (map.getZoom() - 1);
map.setZoom(mapZoom);
}
});
При использовании «bounds_changed» без установленной проверки карта масштабируется один раз для каждого маркера независимо от того, нужен он ему или нет. И наоборот, когда я использовал «zoom_changed», у меня иногда были маркеры под инструментами карты, потому что масштаб на самом деле не менялся. Теперь он всегда срабатывает, но проверка гарантирует, что он уменьшается только один раз и только при необходимости.
Надеюсь, это поможет.