OL3-如何知道绘图或交互是否已启动
OL3 - How to know if drawing or interaction is started
在OpenLayer 3中,我使用他们网站上的"Draw feature"示例代码创建了一个Draw交互。
唯一的区别是,我为Draw构造函数提供了自己的条件函数。
我想知道是否有办法在条件函数中确定交互/绘图是否已经开始
基本上,我的目标是稍微改变行为,这样绘制一个方框是用CTRL键而不是单击启动的。但是,只需单击即可结束绘图。所以我的方法是这样的(在TypeScript中)
var condition = (e: ol.MapBrowserEvent): boolean => {
return (myDraw.isStarted() ? true : e.originalEvent['ctrlKey']);
}
据我所见,在OL Draw类中没有什么比isStarted()方法更好的了。如果我有权访问内部成员,我会通过检查myDraw.sketchCoords_的长度来解决它(尚未检查此项,但如果为0,则图形尚未启动)。但我不想依赖私人成员,而且我使用的是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;
});
相关文章:
- 是否可以在第n个元素处重复启动ng
- 如何在启动mouseup时检测鼠标是否在移动
- 是否可以从在Firefox或IE的网页中运行的Javascript启动Windows进程
- 我可以检测任意CSS转换是否已经启动吗
- 是否可以在所有值都为0的情况下启动D3JS饼图
- 是否可以在jquery启动或每次操作时将变量传递给它
- 了解网页和桌面应用程序是否在同一台计算机上启动
- 是否可以控制typed.js插件何时启动和停止键入文本
- 检查AngularJS模块是否已启动
- 是否可以以编程方式触发点击/拖动事件以启动轮播移动
- 用于检查视频是否正在播放且未重新启动的脚本
- 连接被拒绝!硒服务器是否启动
- 在jQuery中启动.hooper后,我如何检查鼠标是否仍在悬停
- 检查验证组是否有效,而不启动验证客户端
- 是否可以使用Extjs 5 TreeStore在ajax请求中发送启动和限制参数
- 是否可以在浏览器中启动多个js调试器独立会话
- 检测浏览器窗口是否处于活动状态,并在窗口再次处于活动状态后启动事件[JavaScript]
- 是否可以用产卵启动幻影2
- 检查函数是否启动javascript
- 如何检查是否启动下拉菜单加载