2014-09-04 205 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 
}) 
相關問題