我可以在 Openlayers3 中使用 ctrl 拖动地图吗?
Can I drag the map with ctrl in Openlayers3?
有没有一种方法可以在我按住 Ctrl(控制)键时拖动地图?
通常拖动地图只需要按住鼠标左键并在地图上移动,但我需要拖动地图时不按住鼠标左键而是按住ctrl 键。可以吗?
确实有一种方法只能在按住 ctrl 键的同时进行平移。可以在 fiddle 中找到一个完整的示例:https://jsfiddle.net/mnpq3ufe/
要使其正常工作,您必须在地图初始化中禁用现有的 dragPan 交互,以便稍后 override/re-add 它:
interactions: ol.interaction.defaults({
dragPan: false
})
之后,您可以创建新的自定义交互,它只会在按下 ctrl 键时触发,为此我们使用 condition
,有关条件及其可能性的更多信息,您可以前往 OpenLayers APIdocs:
map.addInteraction(new ol.interaction.DragPan({
condition: function(event) {
return event.originalEvent.ctrlKey
}
}));
编辑:
这只是一个概念验证,还没有完全发挥作用,因为它在最初开始拖动时卡入了错误的位置。不幸的是,我现在没有时间弄清楚所有事情,但它可能仍然可以帮助您入门。这是 fiddle:https://jsfiddle.net/mnpq3ufe/5/
基本上,每次按住 ctrl 键移动光标时,我都使用 pointermove
事件使地图重新居中:
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(控制)键时拖动地图?
通常拖动地图只需要按住鼠标左键并在地图上移动,但我需要拖动地图时不按住鼠标左键而是按住ctrl 键。可以吗?
确实有一种方法只能在按住 ctrl 键的同时进行平移。可以在 fiddle 中找到一个完整的示例:https://jsfiddle.net/mnpq3ufe/
要使其正常工作,您必须在地图初始化中禁用现有的 dragPan 交互,以便稍后 override/re-add 它:
interactions: ol.interaction.defaults({
dragPan: false
})
之后,您可以创建新的自定义交互,它只会在按下 ctrl 键时触发,为此我们使用 condition
,有关条件及其可能性的更多信息,您可以前往 OpenLayers APIdocs:
map.addInteraction(new ol.interaction.DragPan({
condition: function(event) {
return event.originalEvent.ctrlKey
}
}));
编辑:
这只是一个概念验证,还没有完全发挥作用,因为它在最初开始拖动时卡入了错误的位置。不幸的是,我现在没有时间弄清楚所有事情,但它可能仍然可以帮助您入门。这是 fiddle:https://jsfiddle.net/mnpq3ufe/5/
基本上,每次按住 ctrl 键移动光标时,我都使用 pointermove
事件使地图重新居中:
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));
}
});