Deshabilite Ctrl + Scroll to Zoom google maps


95

¿Alguien sabe cómo desactivar el CTRL+ Scroll?

Primero, cuando se movió la rueda del mouse, el mapa se acercaría / alejaría. Pero ahora pide presionar CTRL+ Rueda del mouse Desplazarse para acercar / alejar.

¿Cómo desactivamos esta función? Parece que no puedo encontrar nada en la documentación:

https://developers.google.com/maps/documentation/javascript/controls#ControlOptions

ingrese la descripción de la imagen aquí



@BrajeshKanungo que no está relacionado con la función anterior, esta es una nueva función introducida por Google Maps, quiero desactivarla.
Dawood Awan

Ok, ¿puedes decirme qué versión de API estás usando?
Brajesh Kanungo


Esto también acaba de aparecer en nuestro sitio, por lo que probablemente una actualización de la API de Google
Tom

Respuestas:


153

Debe pasar gestureHandling: 'greedy'a las opciones de su mapa.

Documentación: https://developers.google.com/maps/documentation/javascript/interaction#gestureHandling

Por ejemplo:

const map = new google.maps.Map(mapElement, {
  center: { 0, 0 },
  zoom: 4,
  gestureHandling: 'greedy'
});

¡Actualizar! Desde Google Maps 3.35.6, necesita encajar la propiedad en un contenedor de opciones:

const map = new google.maps.Map(mapElement, {
  center: { 0, 0 },
  zoom: 4,
  options: {
    gestureHandling: 'greedy'
  }
});

Gracias ealfonsopor la nueva información


@DiegoAndrade No tengo conocimiento de los detalles. tal vez no se implementó en ese entonces. Pero está presente en las versiones 3.29(congelado), 3.30(lanzamiento) y posteriores ( 3.exp, experimental).
kano

Sí @Kano, en estos documentos esta función todavía está presente, pero en mis pruebas aquí no funciona. Realmente no sé por qué eliminaron esto :(
Diego Andrade

1
Sé que está presente. Ese es el punto. Comenzando con 3.30No está funcionando. Probé todas estas versiones. De todos modos, ya está funcionando con 3.26.
Diego Andrade

3
finalmente la respuesta correcta. Me tomó mucho tiempo buscar esto en Google. No entiendo por qué Google no hizo que esto sea el predeterminado.
comienza el

2
Bingo, esta es la solución perfecta.
N Khan

17

Si está de acuerdo con deshabilitar el desplazamiento para hacer zoom por completo, puede usar scrollwheel: false. El usuario aún podrá hacer zoom en el mapa haciendo clic en los botones de zoom si les proporciona el control de zoom ( zoomControl: true).

Documentación: https://developers.google.com/maps/documentation/javascript/reference (busque en la página "scrollwheel")

const map = new google.maps.Map(mapElement, {
  center: { 0, 0 },
  zoom: 4,
  scrollwheel: false,
  zoomControl: true
});

7

Si solo está buscando ocultar la superposición pero aún deshabilita la capacidad de desplazarse y hacer zoom (como antes), puede usar CSS para ocultar la superposición:

.gm-style-pbc {
opacity: 0 !important;
}

Tenga en cuenta que esto también lo ocultará para dispositivos móviles, por lo que podría usar algo como esto para asegurarse de que muestre "use dos dedos para mover el mapa":

@media only screen and ( min-width: 980px ) {
.gm-style-pbc {
opacity: 0 !important;
}
}

Gracias. Me sorprende que más gente no quiera esto. Es un mensaje superpuesto que distrae mucho y que prácticamente destruye la experiencia del mapa para mí.
BaseZen

5

Anidar el gestureHandlingdentro de una optionspropiedad funcionó para mí en la versión "3.35.6".

map = new google.maps.Map(document.getElementById('map'), {
        zoom: 12,
        options:{
            gestureHandling: 'greedy'
        }
    });

4

No pude hacer que la gestureHandling: 'greedy'solución funcionara para mí ya que tenía una superposición sobre el mapa. Terminé detectando el mousewheelevento y estableciendo la ctrlpropiedad en verdadero.

// Load maps and attach event listener to scroll event.
var $map = $('.map');
$map[0].addEventListener('wheel', wheelEvent, true);         

function wheelEvent(event) {
    // Set the ctrlKey property to true to avoid having to press ctrl to zoom in/out.
    Object.defineProperty(event, 'ctrlKey', { value: true });
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.