111 votes

Désactiver le Ctrl + Scroll pour zoomer sur google maps

Quelqu'un sait-il comment désactiver le CTRL + Scroll ?

Tout d'abord, lorsque la molette de la souris est déplacée, la carte effectue un zoom avant/arrière. Mais maintenant il demande d'appuyer sur CTRL + Molette de la souris Faire défiler pour faire un zoom avant/arrière.

Comment désactiver cette fonction ? Je ne trouve rien dans la documentation :

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

enter image description here

0 votes

Ce lien peut vous aider stackoverflow.com/questions/21992498/

0 votes

@BrajeshKanungo ce n'est pas lié à la fonctionnalité ci-dessus - c'est une nouvelle fonctionnalité introduite par Google Maps - je veux la désactiver.

0 votes

Ok, pouvez-vous me dire quelle version de l'API vous utilisez.

184voto

Kano Points 2414

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'
});

Mise à jour ! Depuis Google Maps 3.35.6 vous devez encastrer la propriété dans un wrapper d'options :

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

Merci. ealfonso pour les nouvelles informations

0 votes

@DiegoAndrade Je ne suis pas au courant des détails. Peut-être que cela n'a pas été implémenté à l'époque. Mais il est présent sur les versions 3.29 (gelé), 3.30 (libération) et vers le haut ( 3.exp , expérimental).

0 votes

Oui @Kano, dans ces docs cette fonctionnalité est toujours présente, mais sur mes tests ici elle ne fonctionne pas. Je ne sais vraiment pas pourquoi ils l'ont supprimée :(

0 votes

Ils ne l'ont pas supprimé, ils l'ont ajouté après la version 3.26 . Il suffit de mettre à jour votre script et c'est parti : )

20voto

Brendan Benson Points 682

Si vous êtes d'accord pour désactiver complètement la fonction de défilement et de zoom, vous pouvez utiliser la méthode suivante scrollwheel: false . L'utilisateur pourra toujours zoomer sur la carte en cliquant sur les boutons de zoom si vous lui fournissez la commande de zoom ( zoomControl: true ).

Documentation : https://developers.google.com/maps/documentation/javascript/reference (recherchez "scrollwheel" sur la page)

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

8voto

Chumtarou Points 108

Si vous souhaitez uniquement masquer la superposition mais désactiver la possibilité de faire défiler et de zoomer (comme auparavant), vous pouvez utiliser le CSS pour masquer la superposition :

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

Notez que cela la masquera également pour les téléphones mobiles. Vous pouvez donc utiliser quelque chose comme ceci pour vous assurer qu'elle affiche "utiliser deux doigts pour déplacer la carte" :

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

0 votes

Merci. Je suis surpris que plus de gens n'en veuillent pas. C'est un très un message superposé distrayant qui détruit virtuellement l'expérience de la carte pour moi.

5voto

erjoalgo Points 969

L'imbrication des gestureHandling dans un options La propriété a fonctionné pour moi sur la version "3.35.6".

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

4voto

MisterMystery Points 379

Je n'ai pas été capable d'obtenir le gestureHandling: 'greedy' ne fonctionne pas pour moi puisque j'avais une superposition sur la carte. J'ai fini par détecter le mousewheel et de définir l'événement ctrl à 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 });
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X