使用pointerEvent进行自定义构建

时间:2016-08-24 13:40:51

标签: openlayers-3

我找不到为我的自定义构建导出“pointerEvent”的位置。我在两个地方检查了pointerEvent的“shiftKey”状态。

  1. 关于singleclick事件:

    evt.pointerEvent.shiftKey

  2. 关于boxend事件:

    evt.mapBrowserEvent.pointerEvent.shiftKey

  3. 我似乎无法弄清楚构建config.json文件中需要什么。我尝试过“ol.interaction。*”和“ol.events。*”的各种组合而没有成功。我已经找到了“pointerEvent”和“mapBrowserEvent.pointerEvent”的来源,并尝试引用我的导出中的那些,但我现在几乎都在猜测。

    由于

2 个答案:

答案 0 :(得分:0)

<强>更新

一些测试:

custom-build.json fiddlecustom 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”。