Empecé a usar el folleto como un mapa de código abierto, http://leaflet.cloudmade.com/
El siguiente código de jQuery permitirá la creación de marcadores en el mapa al hacer clic en el mapa:
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();
};
Pero actualmente no hay forma de que yo (en mi código) elimine los marcadores existentes, o encuentre todos los marcadores que he creado en un mapa y los ponga en una matriz. ¿Alguien puede ayudarme a entender cómo hacer esto? La documentación del folleto está disponible aquí: http://leaflet.cloudmade.com/reference.html
Respuestas:
tienes que poner tu "marcador var" fuera de la función. Luego, más tarde, puede acceder a él:
Entonces despúes :
Pero solo puede tener el último marcador de esa manera, porque cada vez, el marcador var es borrado por el último. Entonces, una forma de hacerlo es crear una matriz global de marcadores y agregar su marcador en la matriz global.
fuente
map._layers
.También puede insertar marcadores en una matriz. Ver ejemplo de código, esto funciona para mí:
fuente
Aquí está el código y la demostración para agregar el marcador , eliminar cualquiera de los marcadores y también obtener todos los marcadores presentes / agregados :
Aquí está el código JSFiddle completo . También aquí está la demostración de página completa .
Añadiendo el marcador:
Eliminar el marcador:
Obteniendo todos los marcadores en el mapa:
fuente
map._layers[ml].feature
ya no funciona.Aquí hay un jsFiddle que le permite crear marcadores usando su
onMapClick
método, luego eliminarlos haciendo clic en un enlace.El proceso es similar al de los indefinidos: agregue cada marcador nuevo a una
markers
matriz para que pueda acceder a un marcador específico cuando desee interactuar con él más adelante.fuente
delete
para eliminar el artículo. Por ejemplodelete markers[$(this).attr('id')];
.(1) agregue un grupo de capas y una matriz para mantener las capas y hacer referencia a las capas como variables globales:
var grupo_búsqueda = new L.LayerGroup (); var clickArr = new Array ();
(2) agregar mapa
(3) Agregar capa de grupo al mapa
map.addLayer (grupo_búsqueda);
(4) la función agregar al mapa, con una ventana emergente que contiene un enlace, que cuando se hace clic tendrá una opción de eliminación. Este enlace tendrá, como id, la latitud del punto. Esta identificación luego se comparará con cuando hace clic en uno de sus marcadores creados y desea eliminarlo.
(5) La función de eliminación, compara la latitud del marcador con la identificación disparada en la eliminación:
fuente
Cuando guarda la reverencia en el marcador en la función de adición, el marcador puede eliminarse por sí mismo. Sin necesidad de matrices.
fuente
¿Ya lo has probado
layerGroup
?Documentos aquí https://leafletjs.com/reference-1.2.0.html#layergroup
Simplemente cree una capa, agregue todos los marcadores a esta capa, luego podrá encontrar y destruir el marcador fácilmente.
fuente
En mi caso, tengo varios grupos de capas para que los usuarios puedan mostrar / ocultar grupos de marcadores de tipo similar. Pero, en cualquier caso, elimina un marcador individual recorriendo sus grupos de capas para encontrarlo y eliminarlo. Mientras realiza un bucle, busque un marcador con un atributo personalizado, en mi caso una 'clave', que se agregó cuando el marcador se agregó al grupo de capas. Agregue su 'clave' al igual que agregar un atributo de título. Más tarde, esto se obtiene como una opción de capa. Cuando encuentre esa coincidencia, usted .removeLayer () y se deshace de ese marcador en particular. ¡Espero que te ayude!
fuente
Puede ser que sea demasiado tarde para esto, pero aún así he creado un proyecto de hechicería abierta para hacer lo mismo junto con alguna otra cosa.
https://github.com/ikishanoza/ionic-leaflet
por favor, pague y haga una estrella si lo desea :)
fuente