我找不到为我的自定义构建导出“pointerEvent”的位置。我在两个地方检查了pointerEvent的“shiftKey”状态。
关于singleclick事件:
evt.pointerEvent.shiftKey
关于boxend事件:
evt.mapBrowserEvent.pointerEvent.shiftKey
我似乎无法弄清楚构建config.json文件中需要什么。我尝试过“ol.interaction。*”和“ol.events。*”的各种组合而没有成功。我已经找到了“pointerEvent”和“mapBrowserEvent.pointerEvent”的来源,并尝试引用我的导出中的那些,但我现在几乎都在猜测。
由于
答案 0 :(得分:0)
<强>更新强>
一些测试:
custom-build.json 和fiddle此custom build(86KB)。
{
"exports": [
"ol.Map",
"ol.Map#on",
"ol.Map#addInteraction",
"ol.layer.Tile",
"ol.source.OSM",
"ol.interaction.DragBox",
"ol.interaction.DragBox#on",
"ol.events.condition.shiftKeyOnly",
"ol.View"
],
"compile": {
"externs": [
"externs/closure-compiler.js",
"externs/oli.js",
"externs/olx.js",
"externs/proj4js.js"
],
"define": [
"ol.ENABLE_DOM=false",
"ol.ENABLE_WEBGL=false",
"ol.ENABLE_PROJ4JS=false",
"ol.ENABLE_VECTOR=false",
"goog.array.ASSUME_NATIVE_FUNCTIONS=true",
"goog.DEBUG=false"
],
"extra_annotation_name": [
"api", "observable"
],
"compilation_level": "ADVANCED",
"manage_closure_dependencies": true
}
}
你应该把。config.json
放进去,没有什么特别的
添加到您的导出数组:
"exports": [
...
"ol.events.condition.shiftKeyOnly"
]
在构建之后尝试这个:
map.on('singleclick', function(evt){
console.info(ol.events.condition.shiftKeyOnly(evt));
});
答案 1 :(得分:0)
可能不是一个很好的答案,因为我不理解“为什么”,但是对于记录 - 我正在检查singleClick事件后的shiftKey状态。使用ol3的调试版本,以下代码可以正常工作:
myVar = evt.pointerEvent.shiftKey; // only works with a debug build
但是使用非调试的ol3构建失败了。以下版本适用于非调试版本:
myVar = ol.events.condition.shiftKeyOnly(evt);
在boxend事件之后检查shiftKey状态添加事件对象的mapBrowserEvent属性:
myVar = ol.events.condition.shiftKeyOnly(evt.mapBrowserEvent);
当我说上面的“非调试”ol3构建时,我指的是“compilation_level”指令设置为“ADVANCED”。