javascript - catch shift-click events in ol.interaction.Draw Open Layers -
i'm trying use ol.interaction.draw add polygons openlayers map. have snap interaction on, , set turn off while i'm holding down shift.
const snapinteraction = new ol.interaction.snap({ source: drawlayer.getsource() }), turnonsnap = (evt) => { if (!isshiftkey(evt)) { return; } console.log('shift key down, turning off snap'); snapinteraction.setactive(false); }, turnoffsnap = (evt) => { if (!isshiftkey(evt)) { return; } console.log('shift key up, turning on snap'); snapinteraction.setactive(true); }; document.addeventlistener('keydown', turnonsnap); document.addeventlistener('keyup', turnoffsnap); this works disable snapping. however, draw interaction doesn't work when hold down shift. know condition parameter defaults ol.events.condition.nomodifierkeys, when make custom condition never gets hit!
const drawinteraction = new ol.interaction.draw({ source: drawlayer.getsource(), type: 'polygon', condition: function (evt) { console.log("yo, why isn't hit when hold down shift?", evt); return (ol.events.condition.nomodifierkeys(evt) || ol.events.condition.shiftkeyonly(evt)); } }); why drawinteraction ignoring shift+click events?
the default freehandcondition catching shift+click events, never evaluated condition. change else, , shift+click events hit custom condition function.
const drawinteraction = new ol.interaction.draw({ source: drawlayer.getsource(), type: 'polygon', condition: function (evt) { return (ol.events.condition.nomodifierkeys(evt) || ol.events.condition.shiftkeyonly(evt)); }, freehandcondition: ol.events.condition.never, // <-- add line });
Comments
Post a Comment