2016-09-30 51 views
0

當我按住Ctrl(控制)鍵時,是否存在拖動地圖的方法?我可以在Openlayers3中用ctrl拖動地圖嗎?

通常拖動地圖是必要的只要按住鼠標左鍵並在地圖上移動,但我需要拖動地圖,而不需要按住鼠標左鍵,而是按住ctrl按鈕。可能嗎?

+0

更好地使用箭頭鍵不然怎麼控制平移? –

+0

我想控制與迷霧平移。我只想拖動地圖,而按住Ctrl鍵而不是鼠標左鍵 – TooFast

回答

1

確實有一種方法只允許按住ctrl-key進行平移。一個完全工作的例子可以在這個小提琴發現:https://jsfiddle.net/mnpq3ufe/

對於它的工作,你必須禁用地圖的init現有dragPan互動重寫/重新添加它以後:

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

之後,你可以創建新的自定義的互動,同時按下Ctrl鍵剛剛觸發,爲此我們使用condition,有關條件和可能性的更多信息,你可以前往的OpenLayers APIdocs

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

編輯:

這僅僅是一個概念的證據,但並沒有充分的工作,因爲它卡入錯了地方當最初開始拖動。不幸的是,我現在沒有時間把所有的東西都弄清楚,但它可能仍然可以幫助你開始。這裏是小提琴:https://jsfiddle.net/mnpq3ufe/5/ 基本上我現在用的是pointermove事件的每按住Ctrl鍵將光標移動時回到中心地圖:

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

相關問題