2011-02-17 27 views
12

Estoy construyendo una aplicación de cazador de tesoros y necesito poder ocultar un marcador y solo hacerlo visible a un cierto nivel de zoom.Marcador Visibilidad En Google Maps

¿Cómo logro esto?

Estoy usando un marcador personalizado y google maps v3.

Gracias.

Ah, y lo raro es que puedo convertir la visibilidad fuera a un cierto nivel de zoom como en el siguiente código:

var marker = new google.maps.Marker({ 
    draggable: false, 
    raiseOnDrag: false, 
    clickable: true, 
    icon: image, 
    shadow: shadow, 
    shape: shape, 
    map: map, 
    url: 'http://www.google.com/', 
    visible: true, 
    position: markerLatlng 
}); 

var zoomLevel; 
//marker.visible = false; 

google.maps.event.addListener(marker, 'click', function() { 
    window.location.href = marker.url; 
}); 

var infowindow = new google.maps.InfoWindow(
{ 
    content: 'Oh You Found Me!!!', 
    size: new google.maps.Size(25,25), 
    position: myLatlng 
}); 


google.maps.event.addListener(map, 'zoom_changed', function() { 
    zoomLevel = map.getZoom(); 

    if (zoomLevel == 16) { 

     marker.visible = false; 

     infowindow.open(map,marker); 

    } 
}); 

pero si invierto el marker.visibility tal que:

var marker = new google.maps.Marker({ 

    draggable: false, 

    raiseOnDrag: false, 

    clickable: true, 

    icon: image, 

    shadow: shadow, 

    shape: shape, 

    map: map, 

    url: 'http://www.google.com/', 



    visible: false, 

    position: markerLatlng 

}); 

google.maps.event.addListener(map, 'zoom_changed', function() { 
    zoomLevel = map.getZoom(); 

    if (zoomLevel == 16) { 

     marker.visible = true; 

     infowindow.open(map,marker); 

    }  
}); 

El marcador no aparecerá en absoluto en el mapa.

+0

Saludos, eso funcionó. Siéntete un poco tonto ahora que marker.visible = true; en realidad era el problema y era solo mi sintaxis. Gracias. –

Respuesta

28

La forma correcta de setVisible es marker.setVisible(false);

5

Si desea establecer la visibilidad en la inicialización del marcador en lugar de como un método después de los hechos, utilice la siguiente sintaxis (ver el docs):

marker = new google.maps.Marker({ 
    map: map, 
    visible: false, // <------ 
}); 
Cuestiones relacionadas