gpt4 book ai didi

javascript - OL3 - 如何知道绘图或交互是否开始

转载 作者:行者123 更新时间:2023-11-28 06:41:17 25 4
gpt4 key购买 nike

在 OpenLayer 3 中,我使用 'draw-feature' sample code they have on their website 创建绘制交互.

唯一的区别是我向 Draw 构造函数提供了自己的条件函数。

我想知道是否有办法在条件函数内确定交互/绘图是否已开始?

基本上,我的目标是稍微改变行为,以便通过按住 CTRL 键单击而不是单击来启动绘制框。但只需单击一下即可结束绘图。所以我的方法是这样的(在 TypeScript 中)

var condition = (e: ol.MapBrowserEvent): boolean => {
return (myDraw.isStarted() ? true : e.originalEvent['ctrlKey']);
}

据我所知,OL Draw 类中没有像 isStarted() 方法这样的方法。如果我有权访问内部成员,我将通过检查 myDraw.sketchCoords_ 的长度来解决它(尚未检查这一点,但如果为 0,则绘图尚未开始)。但我不想依赖私有(private)成员,而且我使用的是 OL 的缩小版本,其中成员名称被转换。

最佳答案

尝试这样的事情:

var start_drawing = false;
function drawCondition(evt){
var ctrl = ol.events.condition.platformModifierKeyOnly(evt);
// this should be ol.events.condition.click
// but for some reason always returns false
var click = evt.type == 'pointerdown';

// to finish draw with click
if(start_drawing) return click;
// start drawing only with Ctrl + click
return ctrl && click;
}
// draw is a reference to ol.interaction.Draw
draw.on('drawstart', function(evt){
start_drawing = true;
});

draw.on('drawend', function(evt){
start_drawing = false;
});

关于javascript - OL3 - 如何知道绘图或交互是否开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33783420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com