javascript - quitar - ¿Cuál es la diferencia entre “marker.setVisible(false)” y “marker.setMap(null)” en Google Maps v3?
remove previous marker google maps javascript (2)
Quiero borrar un marcador en Google Maps.
¿Cuál es la diferencia entre marker.setVisible(false)
y marker.setMap(null)
?
Pero no sé, ¿cuál es el correcto?
La diferencia entre los dos métodos no parece estar claramente documentada. Sin embargo, tenga en cuenta lo siguiente:
Cuando use
setMap(null)
, su marcador perderá la referencia alMap
. Si no mantiene una referencia al objetoMap
, no podrá volver a mostrar el marcador.Además, el método
setMap()
no activará el eventovisible_changed
, mientras que el métodosetVisible()
sí lo hace (si la visibilidad está realmente activada).
Ejemplo:
var map = new google.maps.Map(document.getElementById(''map''), {
zoom: 4,
center: new google.maps.LatLng(-25.363, 131.044),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: new google.maps.LatLng(-25.363, 131.044),
map: map
});
google.maps.event.addListener(marker, ''visible_changed'', function() {
console.log(''visible_changed triggered'');
});
marker.setVisible(false); // visible_changed triggered
marker.setVisible(true); // visible_changed triggered
marker.setMap(null); // visible_changed not triggered
marker.setMap(map); // visible_changed not triggered
Supongo que deberíamos utilizar el setVisible(false)
cuando intentamos volver a mostrar el marcador en el mapa y el setMap(null)
cuando no lo setMap(null)
nuevamente.
Otra distinción clave es que setMap(NULL)
libera los recursos asociados con el marcador, mientras que setVisible(false)
solo hace que el marcador sea invisible, pero los recursos asociados con el marcador aún están asignados.
Si está tratando con 100 o 1000 marcadores, esto puede convertirse en un problema importante de rendimiento y memoria.