L'API Google Maps v3, comment changer l'icône des repères quand on clique dessus
Comment puis-je modifier un marqueur icône lorsqu'un marqueur est activé (sur un événement de clic) et le retour en arrière à une icône de la normale quand un autre marqueur est cliqué?
Je n'ai pas testé ce code, donc il y a peut être des fautes de frappe ou de bugs, mais il devrait vous donner l'idée.
Tout d'abord, définir un rappel pour définir tous les marqueurs de l'icône de la normale (pour réinitialiser précédemment cliqué marqueurs) et régler le courant cliqué sur l'icône des repères à l'icône sélectionnée:
var markerCallback =function(){for(var i=0; i<arrayOfMarkers.length; i++){
arrayOfMarkers[i].setIcon(normalIcon);}this.setIcon(selectedIcon);}
Ensuite, attribuer la fonction de rappel pour l'événement click sur chaque marqueur ainsi:
Il y a certainement un peu de code améliorations qui pourraient être apportées. Par exemple, vous ne voudriez pas normalIcon, selectedIcon, et arrayOfMarkers être variables globales, de la façon dont le code ci-dessus suppose qu'ils sont. Et si vous avez un grand nombre de marqueurs, vous voulez probablement au lieu de garder trace de marqueur sélectionné plutôt que d'avoir un for boucle de réinitialiser l'icône sur chacun d'eux.
Mais comme je l'ai dit, cela doit vous donner l'idée.
Serait beaucoup plus facile de simplement attribuer le marqueur sélectionné pour une variable globale au lieu de courir à travers tous les marqueurs à chaque fois 🙂 Oui, vous avez raison, ce serait mieux! (Pour ma défense, j'ai fait mention de cette question: "Et si vous avez un grand nombre de marqueurs, vous voulez probablement au lieu de garder une trace de la précédente marqueur sélectionné plutôt que d'avoir un for boucle de réinitialiser l'icône sur chacun d'eux.") Je suis vraiment désolé, j'ai totalement raté cette partie. Concentré uniquement sur l'exemple de code 😀 Oh, pas besoin de s'excuser. Vous avez souligné un point important qui était enterré dans mon texte et, par conséquent, facile à manquer. L'ajout de votre commentaire amélioration de la réponse. Cheers!
Juste, en tout cas quelqu'un veut voir un exemple de suivre le marqueur précédent dans une variable globale comme Kasper mentionné, voici ce que j'ai fait:
(après la mise selectedMarker comme une variable globale)
Merci!!!! Il a travaillé 🙂 besoin de quelques changements pour mon cas, mais l'idée est super propre de l'homme, merci Excellent homme, Vous avez fourni la meilleure solution
Je n'ai pas testé ce code, donc il y a peut être des fautes de frappe ou de bugs, mais il devrait vous donner l'idée.
Tout d'abord, définir un rappel pour définir tous les marqueurs de l'icône de la normale (pour réinitialiser précédemment cliqué marqueurs) et régler le courant cliqué sur l'icône des repères à l'icône sélectionnée:
Ensuite, attribuer la fonction de rappel pour l'événement click sur chaque marqueur ainsi:
Il y a certainement un peu de code améliorations qui pourraient être apportées. Par exemple, vous ne voudriez pas
normalIcon
,selectedIcon
, etarrayOfMarkers
être variables globales, de la façon dont le code ci-dessus suppose qu'ils sont. Et si vous avez un grand nombre de marqueurs, vous voulez probablement au lieu de garder trace de marqueur sélectionné plutôt que d'avoir unfor
boucle de réinitialiser l'icône sur chacun d'eux.Mais comme je l'ai dit, cela doit vous donner l'idée.
Oui, vous avez raison, ce serait mieux! (Pour ma défense, j'ai fait mention de cette question: "Et si vous avez un grand nombre de marqueurs, vous voulez probablement au lieu de garder une trace de la précédente marqueur sélectionné plutôt que d'avoir un
for
boucle de réinitialiser l'icône sur chacun d'eux.")Je suis vraiment désolé, j'ai totalement raté cette partie. Concentré uniquement sur l'exemple de code 😀
Oh, pas besoin de s'excuser. Vous avez souligné un point important qui était enterré dans mon texte et, par conséquent, facile à manquer. L'ajout de votre commentaire amélioration de la réponse. Cheers!
OriginalL'auteur Trott
Juste, en tout cas quelqu'un veut voir un exemple de suivre le marqueur précédent dans une variable globale comme Kasper mentionné, voici ce que j'ai fait:
(après la mise selectedMarker comme une variable globale)
besoin de quelques changements pour mon cas, mais l'idée est super propre de l'homme, merci
Excellent homme, Vous avez fourni la meilleure solution
OriginalL'auteur bobfet1