2012-09-21 13 views
6

¿es posible desactivar el movimiento dentro de un google mal (v3) por el tiempo que arrastro un marcador? No quiero utilizar, es decir, el mapa estático. Necesito la función general de movimiento, pero por el momento que arrastre un marcador, el mapa no debería moverse.Deshabilitar Gmap movible

¡Muchas gracias!

Respuesta

15

Los marcadores tienen dragstart and dragend events. En dragstart, desactive la funcionalidad "movimiento" en el Mapa configurando MapOptions a false, como draggable, scrollwheel, etc. En dragend, configure MapOptions nuevamente en true.

Aquí hay una función que puede usar para deshabilitar o habilitar el movimiento del mapa basado en un booleano. Asume que su variable Map es map.

function disableMovement(disable) { 
    var mapOptions; 
    if (disable) { 
     mapOptions = { 
      draggable: false, 
      scrollwheel: false, 
      disableDoubleClickZoom: true, 
      zoomControl: false 
     }; 
    } else { 
     mapOptions = { 
      draggable: true, 
      scrollwheel: true, 
      disableDoubleClickZoom: false, 
      zoomControl: true 
     }; 
    } 
    map.setOptions(mapOptions); 
} 

Y luego lo usan en sus eventos como este (es la variable de marcador):

google.maps.event.addListener(marker, 'dragstart', function() { 
    disableMovement(true); 
}); 

google.maps.event.addListener(marker, 'dragend', function() { 
    disableMovement(false); 
}); 
+0

Bien, pero ¿cuál es el atributo para deshabilitar el movimiento de un mapa? – Thomas1703

+2

@ Thomas1703 Es realmente una combinación de MapOptions. Configurando 'draggable' a' false', por ejemplo, deshabilita la panoramización. Configurar 'scrollwheel' a' false' desactiva el uso de la rueda de desplazamiento del mouse para hacer zoom. 'disableDoubleClickZoom' lo hace para que el usuario no pueda hacer doble clic en el mouse para acercarse, por lo que debe establecerlo en' true'. Y para completar, deshabilite 'zoomControl' al establecerlo en' false' para que los controles de zoom en el mapa estén ocultos. Todo esto junto debería restringir al usuario de mover el mapa. En draggend, restablezca todos estos atributos a sus valores predeterminados. Lea los documentos para saber qué MapOptions establecer. – Gady

+0

@ Thomas1703 Actualicé mi respuesta con un código de ejemplo usando el método setOptions. – Gady

3

gmap.setOptions ({ 'scroll': false});