ChatGPT解决这个技术问题 Extra ChatGPT

禁用 Ctrl + 滚动以缩放谷歌地图

有人知道如何禁用 CTRL + Scroll 吗?

首先,当鼠标滚轮移动时,地图会放大/缩小。但现在它要求按 CTRL + 鼠标滚轮滚动来放大/缩小。

我们如何禁用此功能?我似乎在文档中找不到任何内容:

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

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

此链接可能对您有所帮助stackoverflow.com/questions/21992498/…
@BrajeshKanungo 与上述功能无关 - 这是谷歌地图引入的新功能 - 我想禁用它。
好的,您能告诉我您使用的是哪个 API 版本吗?
这也刚刚出现在我们的网站上,所以可能是谷歌 API 的更新

k
kano

您需要将 gestureHandling: 'greedy' 传递给您的地图选项。

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

例如:

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

更新! 由于 Google 地图3.35.6,您需要将该属性封装到选项包装器中:

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

感谢您ealfonso提供的新信息


@DiegoAndrade 我不知道细节。也许当时没有实施。但它存在于版本 3.29(冻结)、3.30(发布)和更高版本(3.exp,实验性)中。
是的@Kano,在这些文档中这个功能仍然存在,但在我的测试中它不起作用。我真的不知道他们为什么删除这个:(
我知道它存在。这才是重点。从 3.30 开始它不起作用。我测试了所有这些版本。无论如何,它现在与 3.26 一起工作。
终于有正确答案了。我花了很长时间在谷歌上搜索这个。为什么谷歌没有将其设为默认值超出了我的范围。
宾果游戏,这是完美的解决方案。
B
Brendan Benson

如果您可以完全禁用滚动缩放,则可以使用 scrollwheel: false。如果您向用户提供缩放控件 (zoomControl: true),用户仍然可以通过单击缩放按钮来缩放地图。

文档:https://developers.google.com/maps/documentation/javascript/reference(在页面中搜索“滚轮”)

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

C
Chumtarou

如果您只想隐藏叠加层但仍禁用滚动和缩放功能(像以前一样),您可以使用 CSS 隐藏叠加层:

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

请注意,这也会为移动设备隐藏它,因此您可以使用类似这样的方法来确保它显示“用两根手指移动地图”:

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

谢谢你。我很惊讶更多的人不想要这个。这是一个非常分散注意力的覆盖信息,实际上破坏了我的地图体验。
e
ealfonso

在版本“3.35.6”上,将 gestureHandling 嵌套在 options 属性中对我有用。

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

M
MisterMystery

我无法让 gestureHandling: 'greedy' 修复为我工作,因为我在地图上有一个叠加层。我最终检测到 mousewheel 事件并将 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 });
}