J'ai commencé à utiliser leaflet comme une carte open source, http://leaflet.cloudmade.com/
Le code jQuery suivant permettra la création de marqueurs sur la carte en cliquant sur la carte:
map.on('click', onMapClick);
function onMapClick(e) {
var marker = new L.Marker(e.latlng, {draggable:true});
map.addLayer(marker);
marker.bindPopup("<b>Hello world!</b><br />I am a popup.").openPopup();
};
Mais il n'y a actuellement aucun moyen pour moi (dans mon code) de supprimer les marqueurs existants, ou de trouver tous les marqueurs que j'ai créés sur une carte et de les mettre dans un tableau. Quelqu'un peut-il m'aider à comprendre comment faire cela? La documentation de la brochure est disponible ici: http://leaflet.cloudmade.com/reference.html
Réponses:
vous devez mettre votre "marqueur var" hors de la fonction. Ensuite, vous pourrez y accéder plus tard:
puis plus tard:
Mais vous ne pouvez avoir que le dernier marqueur de cette façon, car à chaque fois, le marqueur var est effacé par le dernier. Donc, une façon de procéder consiste à créer un tableau global de marqueurs et à ajouter votre marqueur dans le tableau global.
la source
map._layers
.Vous pouvez également pousser des marqueurs dans un tableau. Voir l'exemple de code, cela fonctionne pour moi:
la source
Voici le code et la démo pour ajouter le marqueur , supprimer l'un des marqueurs et obtenir tous les marqueurs présents / ajoutés :
Voici le code JSFiddle complet . Voici également la démo pleine page .
Ajout du marqueur:
Suppression du marqueur:
Obtenir tous les marqueurs de la carte:
la source
map._layers[ml].feature
ne fonctionne plus.Voici un jsFiddle qui vous permet de créer des marqueurs à l'aide de votre
onMapClick
méthode, puis de les supprimer en cliquant sur un lien.Le processus est similaire à celui d'undefined - ajoutez chaque nouveau marqueur à un
markers
tableau afin que vous puissiez accéder à un marqueur spécifique lorsque vous souhaitez interagir avec lui plus tard.la source
delete
pour supprimer l'élément. Par exempledelete markers[$(this).attr('id')];
.(1) ajoutez un groupe de calques et un tableau pour contenir les calques et faire référence aux calques en tant que variables globales:
var search_group = new L.LayerGroup (); var clickArr = new Array ();
(2) ajouter une carte
(3) Ajouter une couche de groupe à la carte
map.addLayer (search_group);
(4) la fonction d'ajout à la carte, avec une fenêtre contextuelle contenant un lien qui, une fois cliqué, aura une option de suppression. Ce lien aura, comme identifiant, le lat long du point. Cet identifiant sera ensuite comparé au moment où vous cliquez sur l'un de vos marqueurs créés et que vous souhaitez le supprimer.
(5) La fonction de suppression, comparez le marqueur lat long à l'id tiré dans le supprimer:
la source
Lorsque vous enregistrez la vénération du marqueur dans la fonction d'ajout, le marqueur peut le supprimer lui-même. Pas besoin de tableaux.
la source
Avez-vous déjà essayé
layerGroup
?Docs ici https://leafletjs.com/reference-1.2.0.html#layergroup
Créez simplement un calque, ajoutez tous les marqueurs à ce calque, puis vous pouvez trouver et détruire facilement le marqueur.
la source
Dans mon cas, j'ai différents groupes de calques afin que les utilisateurs puissent afficher / masquer des clusters de marqueurs de type similaires. Mais, dans tous les cas, vous supprimez un marqueur individuel en faisant une boucle sur vos groupes de calques pour le trouver et le supprimer. Pendant la boucle, recherchez un marqueur avec un attribut personnalisé, dans mon cas une «clé», ajouté lorsque le marqueur a été ajouté au groupe de calques. Ajoutez votre «clé» tout comme l'ajout d'un attribut de titre. Plus tard, cela devient une option de couche. Lorsque vous trouvez cette correspondance, vous .removeLayer () et il se débarrasse de ce marqueur particulier. J'espère que cela vous aide!
la source
Peut-être suis-je trop tard pour cela, mais j'ai quand même créé un projet open sorce pour faire de même avec autre chose
https://github.com/ikishanoza/ionic-leaflet
s'il vous plaît vérifier et faire la star si vous aimez :)
la source