Question

Je viens de commencé à utiliser l'API Google Maps (v3.0) et ont eu jusqu'à présent beaucoup de succès. Je suis le chargement d'un ensemble d'objets avec des valeurs Latitude et Longitude d'une base de données, de les transmettre dans mon script, et en boucle sur eux dans le script afin de les ajouter à la carte.

J'utilise la méthode de définition de zoom et des limites de la carte « bounds.extend() / map.fitBounds() » (voir le code ci-dessous), qui fonctionne comme prévu la première fois; Cependant, si j'effacer les marqueurs existants, chercher un autre ensemble d'objets, et faire la même chose sur la même instance de carte , il fixe les limites de manière incorrecte, ce qui entraîne généralement un zoom minimum (point de vue d'un astronaute ).

Je soupçonne que mon objet carte a une mémoire de l'ensemble précédent des limites que je lui ai donné et que je dois trouver un moyen d'effacer ces limites avant d'affecter mes nouvelles, mais je ne peux vraiment pas être trop sûr.

Toute aide est grandement appréciée!

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);
Était-ce utile?

La solution

Ce n'est pas la réponse, pour ainsi dire, mais (un peu hacky) solution de contournement que j'ai découvert sur fil dans le groupe Google Maps v3 API Javascript:

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

Autres conseils

si la réponse ci-dessus ne fonctionne pas pour vous (il ne l'a pas pour moi), le problème peut se situer dans bootstrap (en supposant que vous utilisez). modaux bootstrap génèrent spécifiquement toutes sortes de comportements bancal quand j'incorporez un objet carte en elle .. curieusement se corriger si / quand je laisse tomber une « alerte » là-dedans .. dans tous les cas, je résolu tous mes problèmes en tout construire mon propre modal (c.-à ne pas utiliser bootstraps modaux).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top