2016-07-25 6 views
1

Ich versuche, das Standardverhalten von ol3 auf seinem DragZoom-Event zu ändern: Ich möchte diese Funktion standardmäßig auf Click + konfiguriert haben Shift, arbeitet stattdessen mit Klick + Ctrl.OpenLayers 3: DragZoom, Verknüpfung ändern von [Click + Shift] zu [Click + Strg]

Haben Sie eine Idee, wie Sie das ausführen?

konsultiert Bereits in der Online-doc: http://openlayers.org/en/latest/apidoc/ol.interaction.DragZoom.html

scheint eine „Bedingung“ Eigenschaft zu sein, kann aber nicht herausfinden, wie das zu tun.

Antwort

2

Der Wert "Bedingung" muss eine Funktion sein, die beim Auftreten des Ereignisses aufgerufen wird. OpenLayers kommt nicht mit einer ol.events.condition.ctrlKeyOnly, aber Sie könnten Ihre eigenen definieren. Sie müssen die Standard DragZoom Interaktion zunächst deaktivieren, dann fügen Sie Ihre eigenen:

var interactions = ol.interaction.defaults({ 
    shiftDragZoom: false 
}); 
interactions.push(new ol.interaction.DragZoom({ 
    duration: 200, 
    condition: function(mapBrowserEvent) { 
    var originalEvent = mapBrowserEvent.originalEvent; 
    return (
     originalEvent.ctrlKey && 
     !(originalEvent.metaKey || originalEvent.altKey) && 
     !originalEvent.shiftKey); 
    } 
})); 

Sehen sie in Aktion in einem JSFiddle demo.

+0

Vielen Dank Alexandre, das funktioniert perfekt! Danke nochmal für die schnelle Antwort und die Geige. –