用一根手指平移

时间:2016-06-21 13:06:21

标签: javascript openlayers-3

我希望防止用户在捏合旋转或缩放时进行平移, 所以我遇到的解决方案是限制用户只用一根手指进行平移。 所以我能够用以下代码做到这一点:

var interactions = map.getInteractions().forEach(function(interaction)   {
if (interaction instanceof ol.interaction.DragPan) {
    pan = interaction;
}

}, this);


//disable pan with 2 fingers by redefine the handleDownEvent function and call
//to the original handleDownEvent_ function only when the user use 1 finger.
var panDownEvent = pan.handleDownEvent_;
pan.handleDownEvent_ = function (e) {

    if(pan.targetPointers.length >1) return false;
    panDownEvent.call(pan,e);
    return true;
}

问题在于,当我因某种原因使用此代码时,瓷砖延迟加载仅在移动上停止工作

如果您可以添加api选项以将平底锅限制为仅一根手指或给我其他解决方案,我会优雅的, 或事件更好,如何触发ol延迟加载函数。

感谢。

1 个答案:

答案 0 :(得分:0)

使用一些默认交互创建OpenLayers地图。 PinchZoom互动就是其中之一。创建地图时,可以禁用任何默认交互 ,例如要禁用捏缩放交互,您可以执行以下操作:

var map = new ol.Map({
  layers: layers,
  interactions: ol.interaction.defaults({
    pinchZoom: false
  }),
  view: new ol.View({
    center: [0, 0],
    zoom: 2
  })
});

list of interactions页面中详细了解相关信息,其中包含有关ol.interaction.defaults的详细信息,即OpenLayers地图中的默认互动列表。

试试这个,看看是否会让你的另一个问题消失。