remove quitar previous google javascript google-maps google-maps-api-3 google-maps-markers clear

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 al Map . Si no mantiene una referencia al objeto Map , no podrá volver a mostrar el marcador.

  • Además, el método setMap() no activará el evento visible_changed , mientras que el método setVisible() 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.