Na API do Google Maps v2, se eu quisesse remover todos os marcadores de mapa, poderia simplesmente fazer:
map.clearOverlays();
Como faço isso na API do Google Maps v3 ?
Olhando para a API de referência , não está claro para mim.
Na API do Google Maps v2, se eu quisesse remover todos os marcadores de mapa, poderia simplesmente fazer:
map.clearOverlays();
Como faço isso na API do Google Maps v3 ?
Olhando para a API de referência , não está claro para mim.
Respostas:
Simplesmente faça o seguinte:
I. Declare uma variável global:
II Defina uma função:
OU
III Empurre marcadores no 'markerArray' antes de chamar o seguinte:
IV Ligue para a função
clearOverlays();
oumap.clearOverlays();
sempre que necessário.É isso aí!!
fonte
markersArray
para uma matriz vazia em vez de definir o seu comprimento, o que eu acho meio estranho:markersArray = [];
while
abordagem para o processamento da matriz:while(markersArray.length) { markersArray.pop().setMap(null); }
. Não há necessidade de limpar a matriz depois disso.Mesmo problema. Este código não funciona mais.
Eu o corrigi, altere o método clearMarkers da seguinte maneira:
set_map (null) ---> setMap (null)
A documentação foi atualizada para incluir detalhes sobre o tópico: https://developers.google.com/maps/documentation/javascript/markers#remove
fonte
new Array();
?Parece que ainda não existe essa função na V3.
As pessoas sugerem manter referências a todos os marcadores que você possui no mapa em uma matriz. E então, quando você quiser excluir todos eles, faça um loop na matriz e chame o método .setMap (null) em cada uma das referências.
Veja esta pergunta para mais informações / código.
Minha versão:
O código está na versão editada deste código http://www.lootogo.com/googlemapsapi3/markerPlugin.html Removai a necessidade de chamar o addMarker manualmente.
Prós
Contras
fonte
Esta foi a mais simples de todas as soluções postadas originalmente por YingYang 11 / mar '14 às 15: 049, na resposta original à pergunta original do usuário
Estou usando a mesma solução 2,5 anos depois com o google maps v3.18 e funciona como um encanto
fonte
Eu não acho que exista um na V3, então usei a implementação personalizada acima.
Isenção de responsabilidade: não escrevi esse código, mas esqueci de manter uma referência quando a mesclei à minha base de código, para não saber de onde veio.
fonte
Na nova versão v3, eles recomendaram manter as matrizes. como segue.
Veja o exemplo na visão geral da sobreposição .
fonte
A Galeria de demonstração do Google tem uma demonstração de como eles fazem isso:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
Você pode ver o código fonte para ver como eles adicionam marcadores.
Para encurtar a história, eles mantêm os marcadores em uma matriz global. Ao limpá-los / excluí-los, eles fazem um loop na matriz e chamam ".setMap (null)" no objeto marcador especificado.
No entanto, este exemplo mostra um 'truque'. "Limpar" neste exemplo significa removê-los do mapa, mas mantê-los na matriz, o que permite que o aplicativo os adicione novamente rapidamente ao mapa. Em certo sentido, isso age como "escondê-los".
"Excluir" limpa a matriz também.
fonte
está trabalhando apenas no IE.
trabalhando no chrome, firefox, ou seja ...
fonte
A solução é bastante fácil. Você pode usar o método:
marker.setMap(map);
. Aqui, você define em qual mapa o pino aparecerá.Portanto, se você definir
null
este método (marker.setMap(null);
), o alfinete desaparecerá.Agora, você pode escrever uma função enquanto faz desaparecer todos os marcadores no seu mapa.
Você acabou de adicionar para colocar seus pinos em uma matriz e declará-los com
markers.push (your_new pin)
ou com este código, por exemplo:Esta é uma função que pode definir ou desaparecer todos os marcadores da sua matriz no mapa:
Para desaparecer todos os seus marcadores, você deve chamar a função com
null
:E, para remover e desaparecer, todos os seus marcadores, você deve redefinir sua matriz de marcadores assim:
Este é o meu código completo. É o mais simples que eu poderia reduzir. Cuidado, você pode substituir
YOUR_API_KEY
o código pela sua API principal do Google:Você pode consultar o desenvolvedor do Google ou a documentação completa, também, no site do desenvolvedor do Google .
fonte
Uma aplicação limpa e fácil da resposta de rolinger.
fonte
A
set_map
função " " postada nas duas respostas parece não funcionar mais na API do Google Maps v3.Eu me pergunto o que aconteceu
Atualizar:
Parece que o Google alterou sua API de modo que "
set_map
" não seja "setMap
".http://code.google.com/apis/maps/documentation/v3/reference.html
fonte
Aqui você pode encontrar um exemplo de como remover marcadores:
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es
fonte
O seguinte da Anon funciona perfeitamente, embora com cintilação ao limpar repetidamente as sobreposições.
Simplesmente faça o seguinte:
I. Declare uma variável global:
II Defina uma função:
III Empurre marcadores no 'markerArray' antes de chamar o seguinte:
IV Chame a
clearOverlays()
função sempre que necessário.É isso aí!!
Espero que ajude você.
fonte
for(in in markersArray){}
provavelmente não faz o que você espera. SeArray
for estendido para qualquer outro lugar do código, ele também repetirá essas propriedades, e não apenas os índices. A versão javascript dissomarkersArray.forEach()
não é suportada em todos os lugares. Você seria melhor comfor(var i=0; i<markersArray.length; ++i){ markersArray.setMap(null); }
Eu achei o uso da biblioteca markermanager no projeto google-maps-utility-library-v3 como a maneira mais fácil.
1. Configure o MarkerManager
2. Adicione marcadores ao MarkerManager
3. Para apagar marcadores, basta chamar a
clearMarkers()
função MarkerMangerfonte
clearMarkers
faz é iterar sobre os marcadores que chamammarker.setMap(null)
(verifiquei a fonte). Seria menos trabalho colocá-los em uma matriz e fazê-lo você mesmo.Você também pode fazer o seguinte:
fonte
Eu apenas tentei isso com kmlLayer.setMap (null) e funcionou. Não tenho certeza se isso funcionaria com marcadores regulares, mas parece funcionar corretamente.
fonte
Para limpar todas as sobreposições, incluindo polys, marcadores, etc ...
basta usar:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
Aqui está uma função que eu escrevi para fazer isso em um aplicativo de mapa:
fonte
Para remover todos os marcadores do mapa, crie funções como esta:
1.addMarker (localização): esta função é usada para adicionar marcador no mapa
2.clearMarkers (): esta função remove todos os marcadores do mapa, não da matriz
3.setMapOnAll (map): esta função usada para adicionar informações de marcadores na matriz
4.deleteMarkers (): esta função Exclui todos os marcadores da matriz removendo referências a eles.
fonte
A maneira mais limpa de fazer isso é repetir todos os recursos do mapa. Marcadores (junto com polígonos, polilinhas, etc.) são armazenados na camada de dados do mapa.
No caso de os marcadores serem adicionados via gerenciador de desenhos , é melhor criar uma matriz global de marcadores ou empurrá-los para a camada de dados na criação, da seguinte maneira:
Eu recomendo a segunda abordagem, pois ela permite que você use outros métodos de classe google.maps.data posteriormente.
fonte
Este é o método que o próprio Google usa em pelo menos uma amostra:
Verifique a amostra do Google para obter um exemplo de código completo:
https://developers.google.com/maps/documentation/javascript/examples/places-searchbox
fonte
Não sei por que, mas definir
setMap(null)
meus marcadores não funcionou para mim quando estou usandoDirectionsRenderer
.No meu caso, eu tive que ligar
setMap(null)
para o meuDirectionsRenderer
também.Algo parecido:
fonte
Basta passar por cima dos marcadores e removê-los do mapa, os marcadores de mapas vazios depois disso:
fonte
basta limpar o Googlemap
fonte
Eu tentei todas as soluções propostas, mas nada funcionou para mim enquanto todos os meus marcadores estavam em um cluster. Acabei de colocar isso:
Em outras palavras, se você agrupar marcadores em um cluster e quiser remover todos os marcadores, chame:
fonte
Você quer remover como escondê-los ou excluí-los?
se escondendo:
se você deseja excluí-los:
observe que eu uso marcadores de matriz para acompanhá-los e redefini-los manualmente.
fonte
Você precisa definir o mapa nulo para esse marcador.
fonte
Encontrei solução simples (acho):
fonte
Eu uso uma taquigrafia que faz o trabalho bem. Apenas faça
fonte
se você usar o plug-in gmap V3:
$("#map").gmap("removeAllMarkers");
consulte: http://www.smashinglabs.pl/gmap/documentation#after-load
fonte
Eu sei que isso talvez seja uma solução simples, mas é isso que eu faço
Funciona todas as vezes para mim.
fonte