2016-09-30 15 views
0

Ctrlキー(control)を押したままマップをドラッグする方法がありますか?Openlayers3でCtrlキーを押しながら地図をドラッグできますか?

通常は地図をドラッグするだけでマウスの左ボタンを押しながら地図上を移動するだけですが、マウスの左ボタンを押さずにCtrlキーを押しながらマップをドラッグする必要があります。可能ですか?

+0

をより良い利用矢印キーそうでない場合どのようにパンをコントロールします:https://jsfiddle.net/mnpq3ufe/5/ 基本的に私は、Ctrlキーを押しながらカーソルを移動するたびにマップを更新したりするpointermoveイベントを使用していますか? –

+0

私はmauseでパンをコントロールしたい。 Ctrlキーを押しながらマウスの左ボタンを押さないで地図をドラッグしたいだけです – TooFast

答えて

1

本当にCtrlキーを押したままパンを許可するしか方法はありません。完全に動作する例は、このフィドルで見つけることができます:

interactions: ol.interaction.defaults({ 
    dragPan: false 
}) 

:それが機能するためにはhttps://jsfiddle.net/mnpq3ufe/

は、上書きする/後でそれを再追加するには、マップのinitに存在dragPanの相互作用を無効にする必要がありますその後、あなたはOpenLayers APIdocsにオーバー向かうことができる、我々は条件とその可能性についての詳細はconditionを、使用し、このためには、Ctrlキーを押している間だけトリガあなたの新しいカスタマイズされた相互作用を、作成することができます。

map.addInteraction(new ol.interaction.DragPan({ 
    condition: function(event) { 
    return event.originalEvent.ctrlKey 
    } 
})); 

EDIT:

これはまだコンセプトの単なる証拠であるとドラッグを最初に起動するとき、それは間違った場所に収まることから、完全に機能していません。残念ながら私は今現在すべてを把握する時間がありませんが、まだ始めるのにはまだ役立つかもしれません。ここではフィドルは次のとおりです。

map.on('pointermove', function(event){ 
    if(event.originalEvent.ctrlKey){ 
    var pixelCenter = [map.coordinateToPixelTransform_[4], 
     map.coordinateToPixelTransform_[5]]; 
    var movedPixels = [pixelCenter[0]-event.pixel[0], 
     pixelCenter[1]-event.pixel[1]]; 
    map.getView().setCenter(map.getCoordinateFromPixel(movedPixels)); 
    } 
}); 
+0

返事をありがとう。しかし、これは私がCtrlとマウスの左ボタンの両方を押すと動作します。 Ctrlキーを押しながらマウスの左ボタンを押さなくても機能することが必要です。 – TooFast

+0

最初は誤解をおかけして申し訳ありません。私の答えに追加した新しい概念証明があなたを助けてくれるかもしれません。 –

+0

ありがとうございました。これは私を助ける! – TooFast

関連する問題