2010-10-29 2 views
2

J'ai cherché haut et bas pour une solution à ce problème. Je récupère les positions dynamiques des marqueurs et montre la carte positionnée et zoomée sur la ville qui a été sélectionnée dans mon application. Si je fais alors défiler ou zooom la carte de Google et demande alors une mise à jour de la position de marqueurs (en récupérant le xml) je perds la nouvelle position et agrandis j'étais. Comment faire pour que la fonction vérifie ce que le getCenter et le getZoom actuels doivent utiliser dans le rechargement de la carte?Google Maps - maintenir la position actuelle et zoom lors du rechargement des pointeurs de carte dynamiques

function load() { 

if(map) { // Does not work 
    var lat = map.getCenter().lat(); 
    var lng = map.getCenter().lng(); 
     var zoom = map.getZoom(); 
} else { 
    var lat = '<?=$Lat?>'; 
    var lng = '<?=$Lon?>'; 
    var zoom = <?=$zoom?>; 
} 
var map_options = { 
    center: new google.maps.LatLng(lat,lng), 
    zoom: zoom, 
    mapTypeId: '<?=$map_type?>' 
}; 

var map = new google.maps.Map(document.getElementById("map"), map_options); 
var infoWindow = new google.maps.InfoWindow; 

    << Other marker creating code here that works fine >> 

} 
+0

salut dale. avez-vous essayer de le rendre global var? quelque chose comme mapdata = {lat: "", lng: "", zoom: ""} en dehors de la fonction load() {}? – jebberwocky

+0

Ok, mais je ne comprends pas comment je peux alors obtenir les valeurs de getCenter et getZoom avant le "new google.maps()" et ils utilisent ces valeurs dans le map_options – DRAllan

Répondre

1

supprimer le var? pour faire le lat, lng, zoom var global

if(map) { // Does not work 
    lat = map.getCenter().lat(); 
    lng = map.getCenter().lng(); 
    zoom = map.getZoom(); 
} else { 
    lat = '<?=$Lat?>'; 
    lng = '<?=$Lon?>'; 
    zoom = <?=$zoom?>; 
} 

MISE À JOUR déplacer le var map en dehors de function load() {} quelque chose comme ceci:

var map, lat, lng, zoom; 
function load(){...map = new google.maps.Map(document.getElementById("map"), map_options); 

...}

laissez-moi vous expliquer ce peu

  1. whe n page est carte chargée var est lancé comme « rien/null », par conséquent, si (carte) sera faux alors utiliser le lat, lng, zoom de votre PHP

  2. après map = new google.maps.Map(document.getElementById("map"), map_options);, porte carte js objet de gmap.

  3. puis load() {...} est appelé à nouveau if(map) est vrai, alors le bloc sera exécuté
+0

Merci pour les suggestions, mais je ne suis pas vraiment comprendre. Je suis plus un programmeur PHP, donc je suis aux prises avec JavaScript. La raison pour laquelle je peux voir le if (map) n'est jamais retourné vrai est le code "var map = new google.maps.Map (document.getElementById (" map "), options_carte);" vient après, mais je pourrais être induit en erreur par des idées de PHP. J'ai un bouton sur la page qui appelle la fonction load(). Je dois essayer d'obtenir la position actuelle et effectuer un zoom avant de recommencer à initialiser la carte. – DRAllan

+0

salut DRAllan ma réponse est mise à jour. J'espère que ça aide – jebberwocky

+0

Merci. Je comprends maintenant et cela fonctionne parfaitement. :) – DRAllan

Questions connexes