2016-08-24 101 views
0

我无法找到自定义生成的“pointerEvent”导出位置。我在两个地方检查pointerEvent的“shiftKey”状态。在boxend事件使用pointerEvent自定义生成

evt.pointerEvent.shiftKey

  • evt.mapBrowserEvent.pointerEvent.shiftKey

    1. 在singleclick事件

      似乎无法弄清楚我的构建config.json文件中需要什么。我尝试了各种“ol.interaction。*”和“ol.events。*”组合,但没有成功。我已经为“pointerEvent”和“mapBrowserEvent.pointerEvent”出现的grep'd来源,并试图引用那些在我的出口,但我很猜测在这一点上。

      感谢

    回答

    0

    UPDATE:

    一些测试:

    定制build.jsonfiddle这个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)); 
    }); 
    
    +0

    谢谢,但与我的自定义生成您的示例产生:TypeError:ol.events.condition.shiftKeyOnly不是函数 –

    +0

    @RichardGreenwood查看更新的答案。 –

    +0

    谢谢,但我已经有了。试过各种各样的东西,发现我得到了上面的错误与非调试版本,但没有调试版本。所以我的问题似乎不在“出口”部分。 –

    0

    也许不是一个伟大的答案,因为我不明白“为什么”,但备案 - 我在singleClick事件后检查shiftKey状态。随着OL3下面的代码工作的调试版本:

    myVar = evt.pointerEvent.shiftKey; // only works with a debug build 
    

    但未能与非调试OL3版本。下面的版本与非调试工作建立:

    myVar = ol.events.condition.shiftKeyOnly(evt); 
    

    来检查boxend事件后的Shift键,状态添加事件对象的mapBrowserEvent属性:

    myVar = ol.events.condition.shiftKeyOnly(evt.mapBrowserEvent); 
    

    当我说“非调试“上面的ol3构建我指的是”compilation_level“指令被设置为”高级“。