Вызов map.fitBounds() несколько раз в Google Maps API v3.0

Я только начал использовать API Карт Google (v3.0) и до сих пор добился большого успеха. Я загружаю набор объектов со значениями широты и долготы из базы данных, передаю их в свой сценарий и зацикливаю их в сценарии, чтобы добавить их на карту.

Я используюbounds.extend() / map.fitBounds()"метод установки масштаба и границ карты (см. код ниже), который работает, как и ожидалось, в первый раз; однако, если я уберу существующие маркеры, извлечу другой набор объектов и сделаю то же самое на том же экземпляре карты, он устанавливает границы неправильно, обычно приводя к минимальному увеличению (взгляд космонавта).

Я подозреваю, что мой объект карты имеет некоторую память о предыдущем наборе границ, которые я ему дал, и что мне нужно найти способ очистить эти границы перед назначением новых, но я действительно не могу быть слишком уверен.

Любая помощь очень ценится!

var locationList = [];
for (var i = 0; i < mapPoints.length; i++) { // mapPoints is a collection of DTOs
    var mapPoint = mapPoints[i];
    var location = new google.maps.LatLng(mapPoint.Latitude, mapPoint.Longitude);
    locationList.push(location);

    var marker = new google.maps.Marker({
        map: map,
        icon: '/Content/images/map/' + mapPoint.Status.Icon,
        shadow:  '/Content/images/map/shadow.png',
        position: location
    });
    markers.push(marker); // markers is an Array that is managed outside this loop
}

var bounds = new google.maps.LatLngBounds();
for (var j = 0; j < locationList.length; j++) 
    bounds.extend(locationList[j]);
map.fitBounds(bounds);

2 ответа

Решение

Это, так сказать, не ответ, а (немного хакерский) обходной путь, который я обнаружил в потоке в группе Google Maps Javascript API v3:

//map.fitBounds(bounds);
setTimeout( function() { map.fitBounds( bounds ); }, 1 ); 

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

Другие вопросы по тегам