Comecei a usar o folheto como um mapa de código aberto, http://leaflet.cloudmade.com/
O seguinte código jQuery permitirá a criação de marcadores no mapa no clique do 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();
};
Mas atualmente não há como (no meu código) excluir os marcadores existentes ou encontrar todos os marcadores que criei em um mapa e colocá-los em uma matriz. Alguém pode me ajudar a entender como fazer isso? A documentação do folheto está disponível aqui: http://leaflet.cloudmade.com/reference.html
Respostas:
você tem que colocar seu "marcador var" fora da função. Depois, você pode acessá-lo:
então mais tarde:
Mas você só pode ter o marcador mais recente dessa forma, porque a cada vez, o marcador var é apagado pelo último. Portanto, uma maneira de fazer isso é criar uma matriz global de marcador e adicionar seu marcador na matriz global.
fonte
map._layers
.Você também pode inserir marcadores em uma matriz. Veja o exemplo de código, isso funciona para mim:
fonte
Aqui está o código e a demonstração para adicionar o marcador , excluir qualquer um dos marcadores e também obter todos os marcadores presentes / adicionados :
Aqui está o código JSFiddle completo . Também aqui está a demonstração de página inteira .
Adicionando o marcador:
Excluindo o marcador:
Obtendo todos os marcadores no mapa:
fonte
map._layers[ml].feature
não funciona mais.Aqui está um jsFiddle que permite criar marcadores usando seu
onMapClick
método e, em seguida, excluí-los clicando em um link.O processo é semelhante ao de undefined - adicione cada novo marcador a um
markers
array para que você possa acessar um marcador específico quando quiser interagir com ele mais tarde.fonte
delete
para remover o item. Por exemplodelete markers[$(this).attr('id')];
.(1) adicionar grupo de camadas e matriz para manter camadas e fazer referência a camadas como variáveis globais:
var search_group = novo L.LayerGroup (); var clickArr = new Array ();
(2) adicionar mapa
(3) Adicionar camada de grupo ao mapa
map.addLayer (search_group);
(4) a função adicionar ao mapa, com um pop-up que contém um link, que ao ser clicado terá a opção de remover. Este link terá, como id, a lat long do ponto. Este id será então comparado a quando você clica em um dos marcadores criados e deseja excluí-lo.
(5) A função remove, compare o marcador lat long com o id disparado no remove:
fonte
Quando você salva a reverência ao marcador na função de adição, o marcador pode removê-lo sozinho. Não há necessidade de matrizes.
fonte
Você já tentou
layerGroup
?Docs aqui https://leafletjs.com/reference-1.2.0.html#layergroup
Basta criar uma camada, adicionar todos os marcadores a esta camada, então você pode encontrar e destruir o marcador facilmente.
fonte
No meu caso, tenho vários grupos de camadas para que os usuários possam mostrar / ocultar clusters de marcadores de tipo semelhantes. Mas, em qualquer caso, você exclui um marcador individual percorrendo seus grupos de camadas para localizá-lo e excluí-lo. Durante o loop, procure um marcador com um atributo personalizado, no meu caso uma 'chave', adicionado quando o marcador foi adicionado ao grupo de camadas. Adicione sua 'chave' assim como adiciona um atributo de título. Mais tarde, é obtida uma opção de camada. Quando você encontra essa correspondência, remove .removeLayer () e ele se livra desse marcador específico. Espero que ajude você!
fonte
Pode ser que eu seja tarde demais para isso, mas ainda criei um projeto open sorce para fazer o mesmo junto com alguma outra coisa
https://github.com/ikishanoza/ionic-leaflet
por favor verifique e faça uma estrela se quiser :)
fonte