ol.interaction.Draw
を使用して、ポリゴンをopenlayersマップに追加しようとしています。私はまたスナップの対話を持っており、シフトを押さえている間はオフにするように設定しています。ol.interaction.Draw Open Layersでshift-clickイベントをキャッチ
const
snapInteraction = new ol.interaction.Snap({
source: drawLayer.getSource()
}),
turnOnSnap = (evt) => {
if (!isShiftKey(evt)) {
return;
}
console.log('shift key is down, turning off snap');
snapInteraction.setActive(false);
},
turnOffSnap = (evt) => {
if (!isShiftKey(evt)) {
return;
}
console.log('shift key is up, turning on snap');
snapInteraction.setActive(true);
};
document.addEventListener('keydown', turnOnSnap);
document.addEventListener('keyup', turnOffSnap);
これは、スナップを無効にするために機能します。しかし、Shiftキーを押したままでは、私のDraw相互作用は機能しません。 condition
のパラメータのデフォルト値はol.events.condition.noModifierKeys
ですが、私がカスタムを作るときにはcondition
は決してヒットしません!
const drawInteraction = new ol.interaction.Draw({
source: drawLayer.getSource(),
type: 'Polygon',
condition: function (evt) {
console.log("yo, why isn't this hit when I hold down shift?", evt);
return (ol.events.condition.noModifierKeys(evt) ||
ol.events.condition.shiftKeyOnly(evt));
}
});
shiftInteractionがshift + clickイベントを無視するのはなぜですか?