OpenLayers 3ダブルクリック描画終了調整による地図拡大


OpenLayers 3ダブルクリック描画終了調整による地図拡大
  • 前言
  • 原因
  • 解決方法
  • 根源上の
  • を根絶する
  • 巧みさ
  • 通常動作
  • 付録
  • 文字と数字キーのキー値テーブル
  • ディジタルキーボード上のキーのキー値と機能キー値テーブル
  • 制御キーコード値テーブル
  • 前言
    昨日の検収討論では、指導者は地図ツールの中で測距、測面、その他のダブルクリックの終了が必要な操作について疑問を抱いた.本来は正確に描かれていたが,拡大するとまた正確ではない.乙女座の刀を抱いてネット上で多くの招待状を见て、しかし実际にはあまりよくなくて、各种の报道は间违って、やはり记录すると感じます.
    の原因となる
    描画終了の操作と地図ズームの操作はいずれも地図をダブルクリックすることで実現され、地図のデフォルトロード時にはダブルクリックズームイベント(DoubleClickZoom)を含む9種類のイベントが存在するため、操作が速い場合は操作に影響を与える.
    解決策
    根元から根絶する.
    mapの初期ロードをルートから根絶することで、デフォルトのロード時に地図のダブルクリック拡大の操作を禁止できます.
    var map = new ol.Map({    	
        layers : [layer],
        target : id,
        view : new ol.View({
    	    projection : 'EPSG:4326',
    	    center : [ 117.57,33.27 ],
    	    zoom : 9.5,
        }),
        interactions: ol.interaction.defaults({
        	 doubleClickZoom: false,//           
             mouseWheelZoom: false, //              
             shiftDragZoom: false, //   shift+wheel      
        })
    });
    

    もちろん、この方法は、拡大する必要があるパートナーをダブルクリックするのに適していません.
    うまい汁を吸う
    考え方を変えて、人為的にダブルクリックの操作を放棄して、キーボード操作によって描画の取り消し、終了などを操作して、Drawはデフォルトでは描画をクリックして、ダブルクリックして描画を終了して、マウスの左右のボタンが押した時だけ、MapBrowserEvent類のイベントをトリガーするので、OpenLayersのメカニズムを使ってボタンの目的を実現することはできません.Dom要素の操作によるキーボード操作
    
    $(target).keyup(function (event) {
        if (event.keyCode == 27)//ESC  
            draw.finish();
        else if (event.keyCode == 90 && event.ctrlKey) { //ctrl+z  
                draw.removeLastPoint();
        }
    })
    // , , ,            
    

    一般的な操作
    通常の思考では、描画と拡大に問題が発生し、終了時にのみ存在するため、操作の分割、ツールの定義時にDoubleClickZoomイベントを見つけ、役割ドメイン定義宣言、描画前に削除し、描画後に追加し、時間差を利用して人為的な操作の問題を操作する.
    var doubleClickZoom= map.getInteractions().getArray().find(
    	interaction => {
    	  return interaction instanceof ol.interaction.DoubleClickZoom;
    	}
    );
    
    draw.on('drawstart', function(evt) {
    	map.removeInteraction(doubleClickZoom);
    }, this);
    
    draw.on('drawend', function(evt) {
    	setTimeout(function(){
    		map.addInteraction(doubleClickZoom);
    	},100);
    }, this);
    

    100 msのしきい値は自分で操作できます.
    ふろく
    アルファベットと数字キーのキー値テーブル
    キーを押す
    キーコード
    キーを押す
    キーコード
    キーを押す
    キーコード
    キーを押す
    キーコード
    A
    65
    J
    74
    S
    83
    1
    49
    B
    66
    K
    75
    T
    84
    2
    50
    C
    67
    L
    76
    U
    85
    3
    51
    D
    68
    M
    77
    V
    86
    4
    52
    E
    69
    N
    78
    W
    87
    5
    53
    F
    70
    O
    79
    X
    88
    6
    54
    G
    71
    P
    80
    Y
    89
    7
    55
    H
    72
    Q
    81
    Z
    90
    8
    56
    I
    73
    R
    82
    0
    48
    9
    57
    デジタルキーボード上のキーのキー値と機能キー値テーブル
    キーを押す
    キーコード
    キーを押す
    キーコード
    キーを押す
    キーコード
    キーを押す
    キーコード
    0
    96
    8
    104
    F1
    112
    F7
    118
    1
    97
    9
    105
    F2
    113
    F8
    119
    2
    98
    *
    106
    F3
    114
    F9
    120
    3
    99
    +
    107
    F4
    115
    F10
    121
    4
    100
    Enter
    108
    F5
    116
    F11
    122
    5
    101
    -
    109
    F6
    117
    F12
    123
    6
    102
    .
    110
    7
    103
    /
    111
    コントロールキー値テーブル
    キーを押す
    キーコード
    キーを押す
    キーコード
    キーを押す
    キーコード
    キーを押す
    キーコード
    BackSpace
    8
    Esc
    27
    Right Arrow
    39
    -_
    189
    Tab
    9
    Spacebar
    32
    Dw Arrow
    40
    .>
    190
    Clear
    12
    Page Up
    33
    Insert
    45
    /?
    191
    Enter
    13
    Page Down
    34
    Delete
    46
    `~
    192
    Shift
    16
    End
    35
    Num Lock
    144
    [{
    219
    Control
    17
    Home
    36
    ;:
    186
    \
    220
    Alt
    18
    Left Arrow
    37
    =+
    187
    ]}
    221
    Cape Lock
    20
    Up Arrow
    38
    ,<
    188
    '"
    222