当我按住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