【问题标题】:Is there a way to disable rotation in OpenLayers 3?有没有办法在 OpenLayers 3 中禁用旋转?
【发布时间】:2014-09-04 15:18:44
【问题描述】:

我目前正在将我的 OpenLayers 2 Mapview 升级到 OpenLayers 3。我真的很喜欢新的 OpenLayers 客户端,但我想停用在移动设备上旋转地图的功能(用两根手指旋转)。

但我找不到任何设置。这是不可能的还是我只是愚蠢地找到设置?

我正在使用 openlayers javascript 客户端的当前版本 (3.0.0)。 (https://github.com/openlayers/ol3/releases/tag/v3.0.0)

【问题讨论】:

    标签: javascript openlayers openlayers-3


    【解决方案1】:

    是的,有一种方法可以禁用旋转地图的功能。

    您需要自定义 ol.Map 对象的交互。您可以使用 ol.interaction.defaults 函数创建一个带有交互的 ol.Collection,或者创建一个数组,其中只包含您想要的交互。然后就可以传给ol.Map的构造函数了。

    使用ol.interaction.defaults 函数(http://openlayers.org/en/master/apidoc/ol.interaction.html#defaults):

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

    第一行创建所有默认交互,但能够通过键盘+鼠标和在移动设备上使用手指进行旋转。

    您可能也想删除 ol.control.Rotate。 (这是右上角的指针,用于重置旋转,仅在地图旋转时出现)。以同样的方式工作。

    通过ol.control.defaults (http://openlayers.org/en/master/apidoc/ol.control.html#defaults) 创建不带指南针的控件

    var controls = ol.control.defaults({rotate: false});
    

    “完整”代码:

    var controls = ol.control.defaults({rotate: false}); 
    var interactions = ol.interaction.defaults({altShiftDragRotate:false, pinchRotate:false});
    
    var map = new ol.Map {
        controls: controls,
        interactions: interactions
    };
    

    【讨论】:

    • 非常有帮助和完整的解释
    • 你能说一下openlayer3对谷歌地图的作用吗?请帮忙
    【解决方案2】:

    在当前版本的 OpenLayers 3 中,您可以简单地禁用视图对象的 enableRotation flag

    view: new ol.View({
        ...
        enableRotation: false
    })
    

    【讨论】:

    • 可以,但不会删除ol.control.Rotate
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2019-03-27
    • 1970-01-01
    相关资源
    最近更新 更多