我在我的网站上使用谷歌地图api3,现在如果你向下滚动页面,碰巧在谷歌地图上滚动(虽然不打算),地图得到焦点并开始放大。据我所知,这是标准行为,而不是bug或其他。我只是想改变一下……
我希望有一种方法来修改多长时间它需要谷歌地图识别鼠标,并给予它聚焦/放大能力后,一段较长的时间?或者其他一些选项使它获得焦点,例如setTimeout(focus, 300);
或其他。
恐怕Google Maps API没有提供任何方法来禁用默认的滚动行为。虽然您可以取消地图的缩放,但滚动事件无法到达页面。
好的,我错过了scrollwheel
地图选项,它正是你所需要的。实现你想要的行为:
- 初始化地图时设置滚轮选项为false
- 添加鼠标悬停事件监听器,启动定时器。
- 超时呼叫
map.setOptions(options)
,滚轮选项设置为true。 - 添加mouseout事件监听器,再次设置滚轮映射选项false。
- 创建一个透明的div并将其放置在地图上。现在div获得了滚动事件,页面也像往常一样运行。
- 在div上调用onmouseover事件时启动计时器。
- 超时时隐藏div。
- 为地图添加mouseout事件监听器以再次显示div。
在设置地图选项时,可以通过设置scrollwheel:false来禁用滚轮缩放,例如
var options={
zoom:3,
center: new google.maps.LatLng(37.09, -95.71),
mapTypeId: google.maps.MapTypeID.ROADMAp,
scrollwheel:false
}
这将完全禁用地图的滚轮缩放,并纠正你在加载页面时遇到的问题