fitBounds() показывает всю землю (если карта сначала скрыта, а затем показана)

У меня есть куча маркеров, и я хочу показать только область, содержащую их. Я нашел длинный список похожих вопросов (некоторые см. внизу поста), но ни одно из решений не работает для меня. LatLngBounds построен правильно, но когда я вызываю fitBounds, результат будет следующим: after calling fitBounds() Вместо: what should be Может ли кто-нибудь обнаружить очевидную ошибку в моем коде?

var opt = {
    zoom: 8,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"),opt);
var box = new google.maps.LatLngBounds();
for(var i=0;i

Некоторые сообщения, которые я читал и пробовал (список не является исчерпывающим):


Изменить

: это действительно происходит если (как я делаю в своем приложении) карта сначала скрыта, а показывается только потом. Я скрываю это так:

$('#карта').Спрятать();

и покажите это:

$('#map').show(function(){
  //this is necessary because otherwise
  //the map will show up in the upper left corner 
  //until a window resize takes place
  google.maps.event.trigger(map, 'resize');
});

Любая подсказка, почему это происходит и как это предотвратить (кроме инициализации карты при первом отображении)?

Кстати, если я устанавливаю масштаб и центр при объявлении объекта карты (т. е. не использую fitBounds()), то карта будет отображаться правильно, даже после скрытия/отображения. Однако я не могу установить масштаб и центр, потому что список точек извлекается из другого места, и я заранее не знаю, где они находятся.

9
задан Community 23 May 2017 в 10:32
поделиться