【问题标题】:pan with one finger用一根手指平底锅
【发布时间】:2016-06-21 21:18:16
【问题描述】:

我想防止用户在捏旋转或缩放时平移, 所以我提出的解决方案是限制用户只能用一根手指平移。 所以我可以用下面的代码做到这一点:

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延迟加载功能。

谢谢。

【问题讨论】:

    标签: javascript openlayers-3


    【解决方案1】:

    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 地图中的默认交互列表。

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

    【讨论】:

    • 嗨,这不是我的问题,问题是当用户捏他时他也在平移,所以当我使用 2 个手指通过覆盖原始对象中的 handleDownEvent_ 禁用平移时,出于某种原因瓷砖延迟加载仅在移动设备上停止工作。无论如何,谢谢。
    猜你喜欢
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多