Deaktivieren Sie Strg + Bildlauf zum Zoomen von Google Maps


95

Weiß jemand, wie man das CTRL+ deaktiviert Scroll?

Wenn das Mausrad bewegt wurde, wurde die Karte zuerst vergrößert / verkleinert. Jetzt werden Sie aufgefordert, CTRL+ Mausrad zu drücken, um die Ansicht zu vergrößern oder zu verkleinern.

Wie deaktivieren wir diese Funktion? Ich kann anscheinend nichts in der Dokumentation finden:

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

Geben Sie hier die Bildbeschreibung ein



@BrajeshKanungo, das nicht mit der oben genannten Funktion zusammenhängt - dies ist eine neue Funktion, die von Google Maps eingeführt wurde - ich möchte sie deaktivieren.
— Dawood Awan

Ok, können Sie mir sagen, welche API-Version Sie verwenden?
— Brajesh Kanungo


Dies ist gerade auch auf unserer Website erschienen, also wahrscheinlich ein Update auf Googles API
— Tom

Antworten:


153

Sie müssen gestureHandling: 'greedy'an Ihre Kartenoptionen übergeben.

Dokumentation: https://developers.google.com/maps/documentation/javascript/interaction#gestureHandling

Beispielsweise:

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

Aktualisieren! Seit Google Maps müssen 3.35.6Sie die Eigenschaft in einen Options-Wrapper einschließen:

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

Danke ealfonsofür die neuen Infos


@DiegoAndrade Mir sind die Details nicht bekannt. Vielleicht wurde es damals nicht implementiert. Aber es ist in Versionen 3.29(eingefroren), 3.30(Release) und höher ( 3.exp, experimentell) vorhanden.
— Kano

Ja @Kano, in diesen Dokumenten ist diese Funktion noch vorhanden, aber bei meinen Tests hier funktioniert sie nicht. Ich weiß wirklich nicht, warum sie das entfernt haben :(
— Diego Andrade

1
Ich weiß, dass es vorhanden ist. Das ist der Punkt. Beginnen mit 3.30Es funktioniert nicht. Ich habe alle diese Versionen getestet. Wie auch immer, es funktioniert jetzt mit 3.26.
— Diego Andrade

3
Endlich die richtige Antwort. Ich habe lange dafür gegoogelt. Warum Google dies nicht zum Standard gemacht hat, ist mir ein Rätsel.
— woens

2
Bingo, das ist die perfekte Lösung.
— N Khan

17

Wenn Sie das Scrollen zum Zoomen vollständig deaktivieren können, können Sie verwenden scrollwheel: false. Der Benutzer kann die Karte weiterhin durch Klicken auf die Zoomschaltflächen zoomen, wenn Sie ihnen die Zoomsteuerung ( zoomControl: true) zur Verfügung stellen.

Dokumentation: https://developers.google.com/maps/documentation/javascript/reference (suchen Sie auf der Seite nach "Scrollwheel")

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

7

Wenn Sie nur die Überlagerung ausblenden und dennoch die Möglichkeit zum Scrollen und Zoomen (wie zuvor) deaktivieren möchten, können Sie die Überlagerung mithilfe von CSS ausblenden:

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

Beachten Sie, dass dies auch für Mobilgeräte ausgeblendet wird, sodass Sie Folgendes verwenden können, um sicherzustellen, dass "Verschieben Sie die Karte mit zwei Fingern" angezeigt wird:

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

Danke dir. Ich bin überrascht, dass mehr Leute das nicht wollen. Es ist eine sehr ablenkende Overlay-Nachricht, die das Kartenerlebnis für mich praktisch zerstört.
— BaseZen

5

Das Verschachteln gestureHandlinginnerhalb einer optionsEigenschaft funktionierte für mich in Version "3.35.6".

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

4

Ich konnte das gestureHandling: 'greedy'Update nicht zum Laufen bringen, da ich eine Überlagerung über der Karte hatte. Am Ende habe ich das mousewheelEreignis erkannt und die ctrlEigenschaft auf true gesetzt.

// 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 });
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.