加载地图后,Google Maps API v3不会禁用滚轮

Hal*_*yon 5 javascript google-maps-api-3

我正在网站上实现谷歌地图,一切都很好,除了我似乎无法在地图加载后禁用滚轮.如果我在地图加载到scrollwheel之前设置了选项:false,那么滚轮被禁用,但是如果我稍后再尝试(我有一个启用/禁用滚轮的复选框).

以下是我在页面加载时谷歌地图的选项:

var myOptions = {
            zoom: 15,
            center: currentPosition,
            draggable: true,
            scrollwheel: true,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
Run Code Online (Sandbox Code Playgroud)

map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);

然后在单击事件触发复选框后,我有以下代码来禁用滚轮.有趣的是,draggable = false正在工作,阻止我拖动地图.

var checked = $('#chkPin').is(':checked');
        log("map active: " + checked);
        if (checked) {
            map.scrollwheel = false;
            map.draggable = false;
            map.zoomControl = false;
        } else {
            map.scrollwheel = true;
            map.draggable = true;
            map.zoomControl = true;
        }
Run Code Online (Sandbox Code Playgroud)

Cha*_*rth 25

不支持在Maps API对象上编辑未记录的属性,这可能会导致不可预测的结果.您不应直接修改地图对象上的属性.而是使用一个记录的选项修改属性:

对象特定的getter/setter:

map.setOptions({'scrollwheel': false});
Run Code Online (Sandbox Code Playgroud)

MVCObject通用getter/setters:

map.set('scrollwheel', false);
var isScrollWheelEnabled = map.get('scrollwheel');
Run Code Online (Sandbox Code Playgroud)

这两个选项在已经初始化之后成功禁用了滚轮缩放地图.