2015-03-17 14 views
8

Jak wyłączyć interakcję DragPan w Openlayers 3 (gdy mapa jest już zdefiniowana)?Jak wyłączyć DragPan w OpenLayers 3?

Dlaczego nie mogę użyć zdarzenia mousemove? To jest: map.on('mousemove',function(e){ ...}); i nie działa.

Odpowiedz

23

Aby wyłączyć interakcję, musisz usunąć ją z mapy. Jeśli nie mają odniesienia do interakcji, można go znaleźć przy użyciu metody getInteractions mapie:

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

Na razie Przesuń mysz, prawidłowa wydarzenie w użyciu jest „pointermove”, zobaczyć przykład użytkowania: http://openlayers.org/en/v3.3.0/examples/icon.html

Wiesz, że możesz skonfigurować interakcje, które chcesz utworzyć i które są domyślnie dodawane do mapy. Jeśli na przykład chcesz utworzyć mapę bez interakcji dragPan, można to zrobić tak:

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

Zobacz here do listy wszystkich możliwych opcji ol.interaction.defaults.

2

Istnieje obecnie setActive metoda openlayers 3:

map.getInteractions().forEach(function(interaction) { 
    if (interaction instanceof ol.interaction.DragPan) { 
    interaction.setActive(false); 
    } 
}, this); 
Powiązane problemy