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

标签 javascript openlayers openlayers-3

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

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

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

最佳答案

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

您需要自定义 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。 (这是右上角的指针,用于重置旋转,只有在旋转 map 时才会出现)。工作方式相同。

通过 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
};

关于javascript - 有没有办法在 OpenLayers 3 中禁用旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669210/

相关文章:

javascript - 在 DOM 创建中将 jQuery 与原生 JS 结合起来

javascript - 如何在三元运算符中显示 angularjs 表达式?

javascript - 以编程方式发送悬停事件

javascript - 使用开放层打印 SOS 服务的响应

javascript - 访问默认的 OpenLayers 样式

javascript - 循环中的 Switch 语句记录错误值

openlayers - 如何在地理服务器中使用 WPS 进程生成 MBtiles?

javascript - 在 OpenLayers 3 中使用 wfs-t?

javascript - OpenLayers 投影