Est-ce que quelqu'un sait comment désactiver le CTRL + Scroll
?
D'abord, lorsque la molette de la souris est déplacée, la carte effectue un zoom avant/arrière. Mais maintenant, il faut appuyer sur CTRL + Molette de la souris Faites défiler pour zoomer/dézoomer.
Comment désactivons-nous cette fonctionnalité? Je n'arrive pas à trouver quoi que ce soit dans la documentation:
https://developers.google.com/maps/documentation/javascript/controls#ControlOptions
Vous devez passer gestureHandling: 'greedy'
à vos options de carte.
Documentation: https://developers.google.com/maps/documentation/javascript/interaction#gestureHandling
Par exemple:
const map = new google.maps.Map(mapElement, {
center: { 0, 0 },
zoom: 4,
gestureHandling: 'greedy'
});
Si vous acceptez de désactiver complètement le défilement pour zoomer, vous pouvez utiliser scrollwheel: false
. L'utilisateur pourra toujours zoomer sur la carte en cliquant sur les boutons de zoom si vous lui fournissez le contrôle de zoom (zoomControl: true
).
Documentation: https://developers.google.com/maps/documentation/javascript/reference (Recherchez "scrollwheel" dans la page)
const map = new google.maps.Map(mapElement, {
center: { 0, 0 },
zoom: 4,
scrollwheel: false,
zoomControl: true
});
Je ne pouvais pas obtenir le correctif gestureHandling: 'greedy'
pour fonctionner car j'avais une superposition sur la carte. J'ai fini par détecter l'événement mousewheel
et à définir la propriété ctrl
sur true.
// 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 });
}
Si vous souhaitez uniquement masquer la superposition tout en désactivant la possibilité de faire défiler et zoomer (comme avant), vous pouvez utiliser CSS pour masquer la superposition:
.gm-style-pbc {
opacity: 0 !important;
}
Notez que cela le masquera également pour le mobile, vous pouvez donc utiliser quelque chose comme ceci pour vous assurer qu'il affiche "utilisez deux doigts pour déplacer la carte":
@media only screen and ( min-width: 980px ) {
.gm-style-pbc {
opacity: 0 !important;
}
}
L'imbrication de gestureHandling
dans une propriété options
a fonctionné pour moi sur la version "3.35.6".
map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
options:{
gestureHandling: 'greedy'
}
});