2011-06-18 2 views
0

Je souhaite supprimer un marqueur individuel de la carte Google. J'utilise l'API de la version 3. Je sais comment je peux supprimer tous les marqueurs en maintenant un markerArray et en définissant la carte null pour tous.Suppression d'un marqueur individuel de Google Map - API v3

Pour supprimer un par un, je pense à faire une combinaison de paires de valeurs clés. Alors que je donne une clé et enlever le marqueur particulier. J'ai besoin d'aide pour ça.

Voici le code, que j'utilise pour marqueur dram:

function geoCodeAddresses(data) { 

    var markerInfo = {addressKey: '', marker:''}; 

    for (var i = 0; i < data.length; i++) { 
     myLocation = data[i]; 

     geocoder.geocode({"address":myLocation}, function (results, status) { 

      if (status == google.maps.GeocoderStatus.OK) { 
       map.setCenter(results[0].geometry.location); 
       var marker = new google.maps.Marker({map:map, position:results[0].geometry.location}); 
       // checkpoint A 
       alert(myLocation); 
       /* 
       markerInfo.addressKey = myLocation; 
       markerInfo.marker = marker;*/ 

       //mArray.push(markerInfo); 
      } 
     }); 

    } 
} 

Je chercherai addresskey et retirez le marqueur de mArray. Mais je reçois la dernière valeur à chaque fois dans la méthode de rappel de géocodage. Et un objet a été poussé à chaque fois. la var myLocation me donne toujours l'adresse du dernier index de mon tableau. Si je l'alerte au point de contrôle A.

Mon approche est-elle correcte?

Répondre

0

Votre problème est cette ligne:

mArray.push(markerInfo); 

Cela ne pousse pas les valeurs de markerInfo dans votre tableau. Il pousse une référence à markerInfo dans votre tableau. Maintenant, lors de votre itération suivante de la boucle, lorsque vous modifiez la valeur de markerInfo, elle modifie également la valeur pointée par les références dans le tableau. Ainsi, votre tableau finit par avoir des éléments qui ont tous la même valeur.

Essayez ceci:

mArray.push({addressKey:myLocation,marker:marker}); 

Si cela ne fonctionne pas, alors ceci:

mArray.push({addressKey:data[i],marker:marker}); 
+0

Oui avec la portée des variables et la fermeture il y avait problème. –

Questions connexes