當我按住Ctrl(控制)鍵時,是否存在拖動地圖的方法?我可以在Openlayers3中用ctrl拖動地圖嗎?
通常拖動地圖是必要的只要按住鼠標左鍵並在地圖上移動,但我需要拖動地圖,而不需要按住鼠標左鍵,而是按住ctrl按鈕。可能嗎?
當我按住Ctrl(控制)鍵時,是否存在拖動地圖的方法?我可以在Openlayers3中用ctrl拖動地圖嗎?
通常拖動地圖是必要的只要按住鼠標左鍵並在地圖上移動,但我需要拖動地圖,而不需要按住鼠標左鍵,而是按住ctrl按鈕。可能嗎?
確實有一種方法只允許按住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));
}
});
更好地使用箭頭鍵不然怎麼控制平移? –
我想控制與迷霧平移。我只想拖動地圖,而按住Ctrl鍵而不是鼠標左鍵 – TooFast