如何用谷歌地图API禁用鼠标滚轮缩放功能
我正在使用谷歌地图API(v3)在一个页面上绘制一些地图。我想做的一件事是,当你在地图上滚动鼠标滚轮时,禁用缩放功能,但我不确定如何做。
我已经禁用了scaleControl(即删除了缩放的UI元素),但这并不能阻止滚轮缩放。
以下是我的部分功能(这是一个简单的jQuery插件)。
$.fn.showMap = function(options, addr){
options = $.extend({
navigationControl: false,
mapTypeControl: false,
scaleControl: false,
draggable: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
}, options);
var map = new google.maps.Map(document.getElementById($(this).attr('id')), options);
// Code cut from this example as not relevant
};
552
14
在第三版的地图API中,你可以简单地在MapOptions属性中把
scrollwheel
选项设置为false。如果您使用的是第二版地图API,您就必须使用disableScrollWheelZoom()API调用,如下所示。
在地图API的第3版中,"滚动轮 "缩放功能是默认启用的,但在第2版中,除非明确使用 "enableScrollWheelZoom() "API调用来启用,否则它是禁用的。
Daniel'的代码完成了工作(非常感谢!)。但我想完全禁用缩放功能。我发现我必须使用所有这四个选项才能做到。
见。MapOptions对象规范
以防你想动态地做这个。
有时你必须在地图上显示一些"复杂"。 在地图上(或者地图是布局的一小部分),这种滚动缩放的方式就会出现在中间,但是一旦你有了一个干净的地图,这种缩放方式就很好。
保持简单! 原版谷歌地图变量,没有多余的东西。
截至目前(2017年10月),谷歌已经实现了一个特定的属性来处理缩放/滚动,称为
gestureHandling
。 它的目的是为了处理移动设备的操作,但它也修改了桌面浏览器的行为。 这里是[官方文档][1]中的内容。>.函数 initMap() function initMap() {
简而言之,你可以轻松地将设置强制为"总是可缩放"。 (
'贪婪的'
),"永远不能缩放"。 ('none'
),或"用户必须按CRTL/⌘才能启用缩放"。 ('合作'
)。[1]: https://developers.google.com/maps/documentation/javascript/interaction
我创建了一个比较发达的jQuery插件,可以让你用一个漂亮的按钮锁定或解锁地图。
这个插件用一个透明的叠加div禁用谷歌地图iframe,并添加了一个解锁按钮,你必须按650毫秒才能解锁。 你必须按650毫秒才能解锁它。
你可以改变所有的选项,以方便你。 检查它在https://github.com/diazemiliano/googlemaps-scrollprevent
**这里有一些例子。
<!--开始片段。 js hide: false babel: false -->
<!--结束片段-->
以防万一,你使用的是[GMaps.js][1]库,它可以让你做Geocoding和自定义引脚这样的事情变得更简单一些,下面'就是你如何使用从前面的答案中学到的技术解决这个问题。
[1]: https://hpneo.github.io/gmaps/
在我的例子中,最关键的是在init中设置
'scrollwheel':false
。注意。我正在使用[jQuery UI Map
](https://code.google.com/p/jquery-ui-map/)。下面是我的[CoffeeScript][1]init函数标题。对于有人想知道如何禁用Javascript谷歌地图API。
如果你点击一次地图,会启用缩放滚动。 当你的鼠标离开div后,就会停用。
这里是一些例子 <!--开始片段。 js hide: false console: true babel.false --> -- begin snippet: js hide: false console: true false -->
<!--结束片段-->
你只需要在地图选项中添加即可。
一个简单的解决方案。
<!--结束片段-->。
来源: https://github.com/Corsidia/scrolloff
如果有人对纯css的解决方案感兴趣的话。 下面的代码是在地图上覆盖一个透明的div,当地图被点击时,透明的div会移动到地图后面。 叠加可以防止缩放,一旦点击,在地图后面,就会启用缩放。
工作原理请参见我的博文[Google maps toggle zoom with css][1],工作演示请参见pen[codepen.io/daveybrown/pen/yVryMr][2]。
免责声明。 这主要是为了学习,可能不会是生产网站的最佳解决方案。
HTML。
CSS。
[1]: http://web-shed.com/google-maps-toggle-zoom-css/ [2]: http://codepen.io/daveybrown/pen/yVryMr
使用这段代码,将给你所有的颜色和缩放控制的谷歌地图。 (scaleControl: false和scrollwheel: false将防止鼠标滚轮向上或向下缩放)
<!--开始片段。 js hide: false console: true babel.false --> -- begin snippet: js hide: false console: true false -->
<!--结束片段-->
我用这个简单的考试来做
jQuery
CSS
或使用gmap选项。