una studio simbolos remove quitar puntos pines marcadores marca los google eliminar como borrar jquery arrays google-maps-api-3

jquery - studio - quitar puntos en google maps



google maps v3 setMap undefined al intentar borrar todos los marcadores (4)

Pruebe un bucle real. for (i in markersArray) también recuperará propiedades. No es lo mismo que, por ejemplo, foreach de PHP.

for( var i = 0; i < markersArray.length; i++ ) {}

He visto que la gente aquí puede explicar esta función:

// REMOVE All MARKERS FUNCTION // Removes all markers currently on map // PARAMS: None function removeAllMarkers(){// removes all markers from map if (markersArray) { for (i in markersArray) { markersArray[i].setMap(null); markersArray = []; markersInfoArray = []; }; }; };

pero obtengo un error de javascript ...

Break on Error markersArray [i] .setMap no es una función

La página está en: http://www.focus-on-plants.com/locator.php

¿¿¿algunas ideas???

<--------------- Actualización --------------------->

MarkersArray=[] las sugerencias y también moví MarkersArray=[] y markersInfoArray = [] al lado de afuera del ciclo for, así que tuve esto:

for( var i = 0; i < markersArray.length; i++ ){ markersArray[i].setMap(null); }

Pero obtengo los mismos error markersArray[i].setMap is not a function

así que miré a mi alrededor y probé este método:

function removeAllMarkers(){// removes all markers from map alert(''REMOVE MARKERS - markersArray count:''+ markersArray.length); while(markersArray[0]){ markersArray.pop().setMap(null); markersInfoArray.pop() } markersArray.length = 0; markersInfoArray.length = 0; };

y sigo teniendo el mismo error, ¿qué da? es casi como si el setMap () no existiera, leí en otro hilo aquí que cambia de set_map a setMap () pero esos tampoco me funcionan :(


Se rompe porque reinició la matriz dentro del bucle. Esto podría ser mucho mejor:

function removeAllMarkers(){ if (markersArray) { for (i in markersArray) { markersArray[i].setMap(null); } markersArray = []; markersInfoArray = []; } }

Por cierto, no necesitas usar un ; todo el tiempo;)


de acuerdo, tengo que funcionar, la solución es fea pero funciona,

Me di cuenta de que no era encontrar el bit de espacio de nombres google.maps de los marcadores almacenados en mi matriz por lo que es por eso que pensó que la función no existe.

es decir. debe ser google.maps.marker.setMap() el marcador en la matriz acaba de generar el lat y lng.

entonces dentro de la función removeAllMarkers creo un nuevo google.maps.marker delmarker con los datos del marcador almacenado en markersArray y luego markersArray el marcador del mapa usando esta nueva referencia delmarker.setMap(null)

y el bingo funciona, pero me dio largas y me tomó un tiempo darme cuenta :)

function removeAllMarkers(){// removes all markers from map for( var i = 0; i < markersArray.length; i++ ){ delmarker = new google.maps.Marker({ position: markersArray[i] }) delmarker.setMap(null) } markersArray.length = 0; markersInfoArray.length = 0; };


Estaba teniendo el mismo problema que tú. Pero cambiando el ciclo for-in por un ciclo real (como se sugiere aquí , lo solucioné).

No fue necesario crear un nuevo google.maps.marker al eliminar el marcador.

Código de muestra:

var markersArray = [];

function addMarker() { var marker = new google.maps.Marker({ position: latlng, map: map }); markersArray.push(marker); }

function removeMarker() { if (markersArray) { for (i=0; i < markersArray.length; i++) { markersArray[i].setMap(null); } markersArray.length = 0; } }