2010-03-24 3 views
0

Chaque fois que je clique sur la carte, un nouveau marqueur est placé sur la carte. Le problème est que je n'ai besoin que d'un marqueur et si je clique plusieurs fois, chaque fois qu'un nouveau marqueur est ajouté. Comment puis-je changer le code de sorte qu'un seul marqueur est placé et quand la carte est cliquée à nouveau, elle change son emplacement?Marqueur sur Google Map ajouté une seule fois

Voici mon code à ce jour:

function clicked(overlay, latlng) { 
    var icon3 = new GIcon(); 
    icon3.image = "marker.png"; 
    icon3.iconAnchor = new GPoint(15, 40); 

    var marker2 = new GMarker(latlng, { icon: icon3, draggable: true, title: 'Drag me' }); 
    map.addOverlay(marker2); 

} 

Répondre

1

Je recommande maintenant une instance de marker2 en dehors de la fonction clicked, alors si marker2 est nulle, et faire ajouter un nouveau comme vous êtes maintenant, sinon appelez marker2. setLatLong (latlng); mettre à jour son emplacement.

exemple de code non testé:

var marker2; 

function clicked(overlay, latlng) { 
    if (marker2 == null) { 
    var icon3 = new GIcon(); 
    icon3.image = "marker.png"; 
    icon3.iconAnchor = new GPoint(15, 40); 

    marker2 = new GMarker(latlng, { icon: icon3, draggable: true, title: 'Drag me' }); 
    map.addOverlay(marker2); 
    } 
    else { 
    marker2.setLatLong(latlng); 
    } 
}
+0

Bon, mais je pense que celui-ci ne supprime pas la superposition, c'est-à-dire que le marqueur est toujours là. – Vonder

+0

Vous n'avez rien mentionné au sujet des superpositions dans votre question. – Jess

+0

O RLY? "Comment changer le code pour qu'un seul marqueur soit placé et quand on clique à nouveau sur la carte, cela change juste son emplacement" – Vonder

0

Vous aurez besoin de mettre en œuvre une sorte de vérification pour voir si le marqueur a déjà été placé. Une option consisterait à conserver une liste de marqueurs déjà ajoutée et à vérifier cette liste pour un marqueur à un point spécifique avant d'appeler les fonctions pour ajouter le marqueur à la carte. Si vous avez besoin d'un échantillon de code, faites le moi savoir.

+0

Je ne cherche pas cela, mais juste un simple (supprimer la fonction de recouvrement précédente). Il est inutile de vérifier si le marqueur a été ajouté - et il est plutôt impossible parce que chaque point a un emplacement spécifié par 2 chiffres avec 15 décimales chacun et aussi vous devez traiter avec la base de données. – Vonder

0

Eh bien, ne vous fatiguez, j'ai tout compris moi-même. Je viens d'utiliser map.clearOverlays(); avant que le marqueur ne soit placé et cela a résolu le problème.

Questions connexes