2015-03-17 12 views
8

Come disattivare l'interazione di DragPan in Openlayers 3 (quando la mappa è già definita)?Come disabilitare DragPan in OpenLayers 3?

Inoltre, perché non riesco a utilizzare l'evento mousemove?
Sto facendo questo: map.on('mousemove',function(e){ ...}); e non funziona.

risposta

23

Per disabilitare un'interazione, è necessario rimuoverlo dalla mappa. Se non si dispone di un riferimento alla vostra interazione, lo si può trovare con il metodo getInteractions mappa:

var dragPan; 
map.getInteractions().forEach(function(interaction) { 
    if (interaction instanceof ol.interaction.DragPan) { 
    dragPan = interaction; 
    } 
}, this); 
if (dragPan) { 
    map.removeInteraction(dragPan); 
} 

Per l'evento del mouse movimento, l'evento corretto da utilizzare è 'pointermove', vedere un esempio di utilizzo: http://openlayers.org/en/v3.3.0/examples/icon.html

Sapere che è possibile configurare le interazioni che si desidera creare e aggiungere per impostazione predefinita alla mappa. Se, per esempio, si voleva creare una mappa, senza l'interazione dragPan, si potrebbe fare in modo simile a questo:

var map = new ol.Map({ 
    layers: layers, 
    interactions: ol.interaction.defaults({ 
    dragPan: false 
    }), 
    view: new ol.View({ 
    center: [0, 0], 
    zoom: 2 
    }) 
}); 

Vedi here per un elenco di tutte le possibili opzioni di ol.interaction.defaults.

2

v'è ora un metodo setActive in strati di Open 3:

map.getInteractions().forEach(function(interaction) { 
    if (interaction instanceof ol.interaction.DragPan) { 
    interaction.setActive(false); 
    } 
}, this); 
Problemi correlati