2016-09-30 50 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

相关问题