我目前正在将我的 OpenLayers 2 Mapview 升级到 OpenLayers 3。我真的很喜欢新的 OpenLayers 客户端,但我想停用在移动设备上旋转地图的功能(用 2 个手指旋转)。
但我找不到任何设置。这是不可能的还是我只是愚蠢地找到设置?
我正在使用 openlayers javascript 客户端的当前版本(3.0.0)。( https://github.com/openlayers/ol3/releases/tag/v3.0.0 )
我目前正在将我的 OpenLayers 2 Mapview 升级到 OpenLayers 3。我真的很喜欢新的 OpenLayers 客户端,但我想停用在移动设备上旋转地图的功能(用 2 个手指旋转)。
但我找不到任何设置。这是不可能的还是我只是愚蠢地找到设置?
我正在使用 openlayers javascript 客户端的当前版本(3.0.0)。( https://github.com/openlayers/ol3/releases/tag/v3.0.0 )
是的,有一种方法可以禁用旋转地图的功能。
您需要自定义 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
};
在当前版本的 OpenLayers 3 中,您可以简单地禁用视图对象的enableRotation 标志:
view: new ol.View({
...
enableRotation: false
})