2016-08-24 103 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「指令被設置爲」高級「。