【问题标题】:OpenLayers: disable zooming on double-clickOpenLayers:双击时禁用缩放
【发布时间】:2010-09-19 21:11:27
【问题描述】:

默认情况下,当用户双击地图时,OpenLayers 会放大。

禁用此行为的最佳方法是什么?

【问题讨论】:

    标签: javascript maps openlayers


    【解决方案1】:

    双击放大 功能显然是OpenLayers.Control.Navigation 控件中的一项功能。请参阅OpenLayers Reference 了解更多信息。

    一个小而累的例子:

    var Navigation = new OpenLayers.Control.Navigation({
        defaultDblClick: function(event) { return; }
    });
    

    我记得如果在地图初始化期间没有设置任何控件,导航控件会自动添加到地图中。因此,您可能必须自己添加 Navigation 控件。

    希望对你有帮助 =)

    【讨论】:

    • 请注意,您将其应用于地图,就像map.addControl(Navigation);
    【解决方案2】:

    OpenLayers 3 文档Link.

    静态方式:

    var map = new ol.Map({
        interactions: ol.interaction.defaults({ doubleClickZoom: false }),
        ...
    });
    

    动态方式:

    var interactions = map.getInteractions();
    for (var i = 0; i < interactions.getLength(); i++) {
        var interaction = interactions.item(i);                          
        if (interaction instanceof ol.interaction.DoubleClickZoom) {
            map.removeInteraction(interaction);
            break;
        }
    }
    

    【讨论】:

    • 这比接受的答案要好。谢谢+1
    【解决方案3】:

    上面的答案是正确的,但是你必须显式地把这个控件添加到地图中来覆盖默认的Navigation控件,即,

    var Navigation = new OpenLayers.Control.Navigation({
      defaultDblClick: function(event) { return; }
    });
    
    map.addControl(Navigation);
    

    以下控件默认添加到 OpenLayers.Map: OpenLayers.Control.Navigation, OpenLayers.Control.PanZoom, OpenLayers.Control.ArgParser, OpenLayers.Control.Attribution

    因此,如果您想关闭所有这些默认行为,另一种选择是在打开图层地图构造函数的 options 参数中发送一个空数组,有关详细信息,请参阅link text

    【讨论】:

    • 什么不起作用:更改地图导航控件实例上的 defaultDblClick 方法。
    猜你喜欢
    • 2022-08-12
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多