2014-09-04 19 views
9

Ich aktualisiere gerade meine OpenLayers 2 Mapview zu OpenLayers 3. Ich mag den neuen OpenLayers Client, aber ich wollte die Fähigkeit deaktivieren, die Karte auf mobilen Geräten zu rotieren (rotiert mit 2 Fingern).Gibt es eine Möglichkeit, die Rotation in OpenLayers 3 zu deaktivieren?

Aber ich kann keine Einstellungen dafür finden. Ist das nicht möglich oder bin ich nur zu dumm um die Einstellung zu finden?

Ich verwende die aktuelle Release-Version (3.0.0) des Openlayers Javascript-Clients. (https://github.com/openlayers/ol3/releases/tag/v3.0.0)

Antwort

23

Ja gibt es eine Möglichkeit, die Fähigkeit zu deaktivieren, die Karte zu drehen.

Sie müssen die Interaktionen des ol.Map-Objekts anpassen. Entweder Sie verwenden die ol.interaction.defaults Funktion, um eine ol.Collection mit Interaktionen zu erstellen, oder Sie erstellen ein Array mit nur den Interaktionen, die Sie möchten. Dann können Sie es an den Konstruktor von ol.Map übergeben.

Verwenden der ol.interaction.defaults Funktion (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 
}; 

Die erste Zeile erzeugt alle Standard-Wechselwirkungen, sondern die Fähigkeit, über die Tastatur-Maus und mit den Fingern auf einem mobilen Gerät zu drehen.

Vielleicht möchten Sie das ol.control.Rotate dann auch entfernen. (Dies ist die Nadel oben rechts, die zum Zurücksetzen der Drehung verwendet wird und nur erscheint, wenn die Karte gedreht wird). Funktioniert auf die gleiche Weise.

Erstellen von Kontrollen ohne Kompass über ol.control.defaults (http://openlayers.org/en/master/apidoc/ol.control.html#defaults)

var controls = ol.control.defaults({rotate: false}); 

'Full' Code:

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

Sehr hilfreiche und vollständige Erklärung –

+0

können Sie bitte sagen, was genau Openlayer3 mit Google Map tut bitte helfen –

+0

Ich kann bestätigen, dass dies auch in ol4 funktioniert – jOshT

2

In der aktuellen Version von Openlayers 3 können Sie einfach die enableRotation flag der Ansicht Objekt deaktivieren:

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