2014-09-04 14 views
9

Attualmente sto aggiornando il mio OpenLayers 2 Mapview a OpenLayers 3. Mi piace molto il nuovo client OpenLayers, ma volevo disattivare la possibilità di ruotare la mappa sui dispositivi mobili (ruotando con 2 dita).C'è un modo per disabilitare la rotazione in OpenLayers 3?

Ma non riesco a trovare alcuna impostazione per questo. Non è possibile o sono solo stupido nel trovare l'impostazione?

Sto utilizzando la versione corrente (3.0.0) del client javascript di Openlayers. (https://github.com/openlayers/ol3/releases/tag/v3.0.0)

risposta

23

Sì, c'è un modo per disattivare la possibilità di ruotare la mappa.

È necessario personalizzare le interazioni dell'oggetto ol.Map. O si utilizza la funzione ol.interaction.defaults per creare un ol.Collection con interazioni oppure si crea un array con solo le interazioni desiderate. Quindi puoi passarlo al costruttore di Ol.Map.

Utilizzando la funzione 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 
}; 

La prima riga crea tutte le interazioni di default, ma la possibilità di ruotare tramite tastiera + mouse e usando le dita su un dispositivo mobile.

Forse si desidera rimuovere anche l'ol.control.Rotate. (Questo è l'ago in alto a destra che viene utilizzato per ripristinare la rotazione e appare solo se la mappa viene ruotata). Funziona allo stesso modo.

Creazione di controlli senza bussola via ol.control.defaults (http://openlayers.org/en/master/apidoc/ol.control.html#defaults)

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

codice 'completa':

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

Spiegazione molto utile e completa –

+0

puoi dirmi esattamente cosa fa openlayer3 con google map, per favore aiuto –

+0

Posso confermare che funziona anche in ol4 – jOshT

2

Nella versione attuale di OpenLayers 3 si può semplicemente disattivare la enableRotation flag dell'oggetto vista:

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