У меня возникла та же проблема, когда после инициализации карты с именем map.fitBounds(...)
. Поведение, с которым я столкнулся, заключалось в том, что если метод fitBounds
вызывался через несколько секунд после инициализации карты, то проблем не возникало (масштаб был соответствующим). Итак, сначала я начал вызывать метод fitBounds
после того, как карта была загружена, что на картах Google означает, что карта idle
.
google.maps.event.addListener(map, 'idle', function() {
var bounds = //define bounds...
map.fitBounds(bounds);
});
Это действительно работает, однако событие idle
запускается почти постоянно. И если есть какие-либо изменения на карте (перетаскивание, масштабирование и т. д.), когда это изменение прекратится, карта снова будет соответствовать границам... Проблема в том, что вызов метода только один раз не strong> работать (либо с логическим значением, чтобы проверить, был ли он уже вызван, либо с google.maps.event.addListenerOnce
, потому что в первый раз, когда карта простаивает, она все еще «не готова» для установки границ. (Из опыта).
Итак, мое решение состояло в том, чтобы активировать fitBounds
в другом событии. Вместо idle
, который вызывается слишком рано для метода fitBounds
, событие tilesloaded
фактически выполняет свою работу (вызывается только один раз)!
Решение:
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
var bounds = //define bounds...
map.fitBounds(bounds);
});
person
Miguel Rebocho
schedule
15.05.2020