Dans Google Maps API v2, si je voulais supprimer tous les marqueurs de carte, je pouvais simplement faire:
map.clearOverlays();
Comment faire cela dans l'API Google Maps v3 ?
En regardant l' API de référence , ce n'est pas clair pour moi.
Dans Google Maps API v2, si je voulais supprimer tous les marqueurs de carte, je pouvais simplement faire:
map.clearOverlays();
Comment faire cela dans l'API Google Maps v3 ?
En regardant l' API de référence , ce n'est pas clair pour moi.
Réponses:
Procédez simplement comme suit:
Déclarez une variable globale:
II. Définissez une fonction:
OU
III. Poussez les marqueurs dans le 'markerArray' avant d'appeler ce qui suit:
IV. Appelez la fonction
clearOverlays();
oumap.clearOverlays();
là où vous le souhaitez.C'est ça!!
la source
markersArray
un tableau vide au lieu de définir sa longueur, ce que je trouve un peu étrange:markersArray = [];
while
approche pour le traitement du tableau:while(markersArray.length) { markersArray.pop().setMap(null); }
. Pas besoin d'effacer le tableau après cela.Même problème. Ce code ne fonctionne plus.
Je l'ai corrigé, changez la méthode clearMarkers de cette façon:
set_map (null) ---> setMap (null)
La documentation a été mise à jour pour inclure des détails sur le sujet: https://developers.google.com/maps/documentation/javascript/markers#remove
la source
new Array();
?Il semble qu'il n'y ait pas encore une telle fonction dans V3.
Les gens suggèrent de conserver les références à tous les marqueurs que vous avez sur la carte dans un tableau. Et puis, lorsque vous voulez les supprimer tous, faites une boucle dans le tableau et appelez la méthode .setMap (null) sur chacune des références.
Voir cette question pour plus d'informations / code.
Ma version:
Le code est une version modifiée de ce code http://www.lootogo.com/googlemapsapi3/markerPlugin.html J'ai supprimé le besoin d'appeler manuellement addMarker.
Avantages
Les inconvénients
la source
C'était la plus simple de toutes les solutions initialement publiées par YingYang le 11 mars 2014 à 15 h 04 sous la réponse d'origine à la question d'origine des utilisateurs.
J'utilise sa même solution 2,5 ans plus tard avec google maps v3.18 et cela fonctionne comme un charme
la source
Je ne pense pas qu'il y en ait un dans V3, j'ai donc utilisé l'implémentation personnalisée ci-dessus.
Avertissement: je n'ai pas écrit ce code mais j'ai oublié de conserver une référence lorsque je l'ai fusionné dans ma base de code, donc je ne sais pas d'où il vient.
la source
Sur la nouvelle version v3, ils ont recommandé de conserver les tableaux. comme suit.
Voir l'exemple à l' overlay-overview .
la source
La galerie de démonstration de Google propose une démonstration sur la façon dont ils le font:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
Vous pouvez afficher le code source pour voir comment ils ajoutent des marqueurs.
Pour faire court, ils gardent les marqueurs dans un tableau global. Lors de leur effacement / suppression, ils bouclent le tableau et appellent ".setMap (null)" sur l'objet marqueur donné.
Cependant, cet exemple montre une «astuce». "Effacer" pour cet exemple signifie les supprimer de la carte mais les conserver dans le tableau, ce qui permet à l'application de les ajouter rapidement à la carte. Dans un sens, cela revient à "les cacher".
"Supprimer" efface également le tableau.
la source
ne fonctionne que sur IE.
travailler sur chrome, firefox, c'est à dire ...
la source
La solution est assez simple. Vous pouvez utiliser la méthode:
marker.setMap(map);
. Ici, vous définissez sur quelle carte apparaîtra l'épingle.Donc, si vous définissez
null
cette méthode (marker.setMap(null);
), la broche disparaîtra.Maintenant, vous pouvez écrire une fonction qui fait disparaître tous les marqueurs de votre carte.
Vous venez d'ajouter pour mettre vos broches dans un tableau et les déclarer avec
markers.push (your_new pin)
ou ce code par exemple:Il s'agit d'une fonction qui permet de définir ou de supprimer tous les marqueurs de votre tableau dans la carte:
Pour faire disparaître tous vos marqueurs, vous devez appeler la fonction avec
null
:Et, pour supprimer et supprimer tous vos marqueurs, vous devez réinitialiser votre tableau de marqueurs comme ceci:
Ceci est mon code complet. C'est le plus simple que je puisse réduire. Attention, vous pouvez remplacer
YOUR_API_KEY
le code par votre clé google API:Vous pouvez consulter le développeur Google ou la documentation complète sur, également, le site Web du développeur Google .
la source
Une application propre et facile de la réponse de rolinger.
la source
La
set_map
fonction " " publiée dans les deux réponses semble ne plus fonctionner dans l'API Google Maps v3.je me demande ce qui est arrivé
Mise à jour:
Il semble que Google ait modifié son API de sorte que "
set_map
" ne soit pas "setMap
".http://code.google.com/apis/maps/documentation/v3/reference.html
la source
Vous trouverez ici un exemple de suppression de marqueurs:
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es
la source
Ce qui suit d'Anon fonctionne parfaitement, bien qu'avec des scintillements lors de la suppression répétée des superpositions.
Procédez simplement comme suit:
Déclarez une variable globale:
II. Définissez une fonction:
III. Poussez les marqueurs dans le 'markerArray' avant d'appeler ce qui suit:
IV. Appelez la
clearOverlays()
fonction où vous le souhaitez.C'est ça!!
J'espère que cela vous aidera.
la source
for(in in markersArray){}
ne fait probablement pas ce que vous attendez de lui. SiArray
est étendu ailleurs dans le code, il itérera également sur ces propriétés, et pas seulement sur les index. La version javascript de celle-markersArray.forEach()
ci n'est pas prise en charge partout. Vous seriez mieux avecfor(var i=0; i<markersArray.length; ++i){ markersArray.setMap(null); }
J'ai trouvé que l'utilisation de la bibliothèque markermanager dans le projet google-maps-utility-library-v3 était la manière la plus simple.
1. Configurez le MarkerManager
2. Ajoutez des marqueurs au MarkerManager
3. Pour effacer les marqueurs, il vous suffit d'appeler la
clearMarkers()
fonction MarkerMangerla source
clearMarkers
suffit d'itérer sur les marqueurs appelantmarker.setMap(null)
(j'ai vérifié la source). Ce serait moins de travail de les mettre dans un tableau et de le faire vous-même.Vous pouvez aussi le faire de cette façon:
la source
Je viens d'essayer cela avec kmlLayer.setMap (null) et cela a fonctionné. Je ne sais pas si cela fonctionnerait avec des marqueurs réguliers mais semble fonctionner correctement.
la source
Pour effacer toutes les superpositions, y compris les polys, les marqueurs, etc.
utilisez simplement:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
Voici une fonction que j'ai écrite pour le faire me former sur une application cartographique:
la source
Pour supprimer tous les marqueurs de la carte, créez des fonctions comme ceci:
1.addMarker (emplacement): cette fonction permet d'ajouter un marqueur sur la carte
2.clearMarkers (): cette fonction supprime tous les marqueurs de la carte, pas du tableau
3.setMapOnAll (map): cette fonction permet d'ajouter des informations de marqueurs dans le tableau
4. supprimer les marqueurs (): cette fonction supprime tous les marqueurs du tableau en supprimant les références à ceux-ci.
la source
La manière la plus propre de procéder consiste à parcourir toutes les fonctionnalités de la carte. Les marqueurs (avec les polygones, les polylignes, etc.) sont stockés dans la couche de données de la carte.
Dans le cas où les marqueurs sont ajoutés via le gestionnaire de dessins , il est préférable de créer un tableau global de marqueurs ou de pousser les marqueurs dans la couche de données lors de la création comme suit:
Je recommande la deuxième approche car elle vous permet d'utiliser d'autres méthodes de classe google.maps.data plus tard.
la source
C'est la méthode que Google utilise elle-même dans au moins un échantillon:
Consultez l'exemple Google pour un exemple de code complet:
https://developers.google.com/maps/documentation/javascript/examples/places-searchbox
la source
Je ne sais pas pourquoi, mais le réglage
setMap(null)
de mes marqueurs n'a pas fonctionné pour moi lorsque j'utiliseDirectionsRenderer
.Dans mon cas, j'ai dû également appeler
setMap(null)
monDirectionsRenderer
.Quelque chose comme ca:
la source
Parcourez simplement les marqueurs et supprimez-les de la carte, videz le tableau des marqueurs de cartes après cela:
la source
effacez googlemap
la source
J'ai essayé toutes les solutions proposées, mais rien n'a fonctionné pour moi alors que tous mes marqueurs étaient sous un cluster. Finalement, je viens de mettre ceci:
En d'autres termes, si vous encapsulez des marqueurs dans un cluster et souhaitez supprimer tous les marqueurs, vous appelez:
la source
Vous voulez dire supprimer comme en les cachant ou en les supprimant?
s'il se cache:
si vous souhaitez les supprimer:
notez que j'utilise un tableau de marqueurs pour garder une trace d'eux et le réinitialiser manuellement.
la source
Vous devez définir la carte nulle sur ce marqueur.
la source
J'ai trouvé une solution simple (je pense):
la source
J'utilise un raccourci qui fait bien le travail. Fais juste
la source
si vous utilisez le plugin gmap V3:
$("#map").gmap("removeAllMarkers");
voir: http://www.smashinglabs.pl/gmap/documentation#after-load
la source
Je sais que c'est peut-être une solution simple, mais c'est ce que je fais
Fonctionne à chaque fois pour moi.
la source