有没有一种方法可以在OpenLayers 3中禁用旋转?

12

我目前正在将OpenLayers 2地图视图升级到OpenLayers 3。我非常喜欢新的OpenLayers客户端,但是我想要在移动设备上禁用旋转地图的功能(使用两个手指旋转)。

但我找不到任何相关设置。这是不可能的吗,还是只是我太笨而已?

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

2个回答

35

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

您需要自定义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
};

非常有帮助和完整的解释。 - John Powell
你能否请说明一下OpenLayers3与Google地图的具体作用是什么?请帮忙。 - Dhana Lakshmi

12
在当前的 OpenLayers 3 版本中,您可以简单地禁用视图对象的 enableRotation 标志
view: new ol.View({
    ...
    enableRotation: false
})

是的,但它不会删除 ol.control.Rotate - Shiva127

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接