繁体   English   中英

有没有办法在OpenLayers 3中禁用旋转?

[英]Is there a way to disable rotation in OpenLayers 3?

我目前正将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创建无指南针的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
};

在当前版本的OpenLayers 3中,您只需禁用视图对象的enableRotation标志

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM