Openlayer:两指移动(dragPan)

Ste*_*fan 5 openlayers

Google最近重新设计了那里的地图移动行为。现在,在移动设备上,您可以用两个手指移动地图。(请参阅手机上的地图简单示例,而不是任何浏览器模拟器!)。

我想在openlayer中实现相同的功能。检测移动设备(例如使用WURFL),禁用dragPan并不是问题,但是我该如何编写自己的ol.interaction.Interaction两只手指才能工作?

我调查了doku,没有找到任何示例,从哪里开始。

tra*_*m_3 2

拖动交互通常带有“条件”选项。您提供一个函数,该函数采用一个参数 ( ol.MapBrowserEvent ) 并返回一个布尔值,指示是否应应用交互。

ol.MapBrowserEvent包装了原始浏览器事件这意味着您只需查找其上的 Touches 数组并检查它的长度是否为 2。

<script>
    var map = new ol.Map({
        interactions: [
            new ol.interaction.DragPan({

                // This comment marks the beginning of the code of interest.

                condition: function(olBrowserEvent) {
                    if (olBrowserEvent.originalEvent.touches)
                        return olBrowserEvent.originalEvent.touches.length === 2;
                    return false;
                }

                // This comment marks the end.

            })
        ],
        layers: [
            // Your layers.
        ],
        target: 'map',
        view: new ol.View({
            center: [-33519607, 5616436],
            rotation: -Math.PI / 8,
            zoom: 8
        })
    });
</script> 
Run Code Online (Sandbox Code Playgroud)