Pergunta

Acabei de começar a usar a API do Google Maps (v3.0) e tive muito sucesso até agora. Estou carregando um conjunto de objetos com valores de latitude e longitude a partir de um banco de dados, passando -os para o meu script e entrando sobre eles no script para adicioná -los ao mapa.

Eu estou usando o "bounds.extend() / map.fitBounds()"Método de definir o zoom & limites do mapa (veja o código abaixo), que funciona como esperado pela primeira vez; no entanto, se eu limpar os marcadores existentes, buscar outro conjunto de objetos e fazer a mesma coisa Na mesma instância do mapa, ele define os limites incorretamente, geralmente resultando em um zoom mínimo (a visão de um astronauta).

Minha suspeita é que meu objeto de mapa tenha alguma memória do conjunto anterior de limites que eu o dei e que preciso encontrar uma maneira de limpar esses limites antes de atribuir meus novos, mas realmente não posso ter muita certeza.

Qualquer ajuda é muito apreciada!

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);
Foi útil?

Solução

Esta não é a resposta, por assim dizer, mas uma solução alternativa (um pouco hacky) que eu descobri em um fio No Google Maps JavaScript API V3 Group:

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

Outras dicas

Se a resposta acima não funcionar para você (não foi para mim), o problema pode estar no bootstrap (supondo que você esteja usando). Os modais de bootstrap geram especificamente todos os tipos de comportamento instável quando eu incorporo um objeto de mapa nele. (ou seja, não usando modais de bootstraps).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top