2014-09-04 214 views
9

我目前正在将我的OpenLayers 2 Mapview升级到OpenLayers 3.我非常喜欢新的OpenLayers客户端,但是我想停用在移动设备上旋转地图(用2个手指旋转)的功能。有没有办法在OpenLayers 3中禁用旋转?

但我无法找到任何设置。这是不可能的,或者我只是愚蠢的找到设置?

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

回答

23

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

您需要自定义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.defaultshttp://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 
}; 
+0

非常有帮助和完整的说明 – 2014-09-05 19:48:37

+0

可以请你说什么openlayer3做谷歌地图请帮助 – 2015-12-11 07:26:01

+0

我可以证实这个作品在ol4以及 – jOshT 2017-07-18 05:13:14

2

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

view: new ol.View({ 
    ... 
    enableRotation: false 
}) 
相关问题