ChatGPT解决这个技术问题 Extra ChatGPT

Disable the Ctrl + Scroll to Zoom google maps

Does anybody know how to disable the CTRL + Scroll?

First when the mouse wheel was moved the Map would Zoom in/out. But now it asks to press CTRL + Mouse Wheel Scroll to Zoom in/out.

How do we disable this feature? I can't seem to find anything in the documentation:

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

https://i.stack.imgur.com/BkusO.png

@BrajeshKanungo that is not related to the above feature - this a new feature introduced by Google Maps - I want to disable it.
Ok can you tell me which API version you are using.
This has just appeared on our site too, so probably an update on googles API

k
kano

You need to pass gestureHandling: 'greedy' to your map options.

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

For example:

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

Update! Since Google Maps 3.35.6 you need to encase the property into an options wrapper:

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

Thank you ealfonso for the new info


@DiegoAndrade I'm not aware of the details. maybe it wasn't implemented back then. But it's present on versions 3.29 (frozen), 3.30 (release) and upwards (3.exp, experimental).
Yes @Kano, in these docs this feature is still present, but on my tests here it is not working. I really don't know why they removed this :(
I know it is present. That's the point. Starting with 3.30 It's not working. I tested all these versions. Anyway, it's working by now with 3.26.
finally the right answer. Took me a long time googling for this. Why google did't make this the default is beyond me.
Bingo, this is the perfect solution.
B
Brendan Benson

If you're OK with disabling scroll-to-zoom entirely, you can use scrollwheel: false. The user will still be able to zoom the map by clicking the zoom buttons if you provide them with the zoom control (zoomControl: true).

Documentation: https://developers.google.com/maps/documentation/javascript/reference (search the page for "scrollwheel")

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

C
Chumtarou

If you are looking to only hide the overlay but still disable the ability to scroll and zoom (like before), you could use CSS to hide the overlay:

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

Note this will hide it for mobile as well so you could use something like this to ensure it shows "use two fingers to move the map":

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

Thank you. I'm surprised more people don't want this. It's a very distracting overlay message that virtually destroys the map experience for me.
e
ealfonso

Nesting the gestureHandling within an options property worked for me on version "3.35.6".

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

M
MisterMystery

I wasn't able to get the gestureHandling: 'greedy' fix to work for me since I had an overlay over the map. I ended up detecting the mousewheel event and setting the ctrl property to 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 });
}