Openlayers 3

时间:2016-02-10 13:17:39

标签: openlayers-3

我需要检测mousedown和mouseup事件并在Openlayers 3地图上获取它们的坐标,但它似乎根本不起作用,我在文档中找不到任何相关内容。< / p>

map.on('click', function(ev){ console.log(ev.coordinate);} );

工作正常,并获得正确的位置,但当我更换&#34;点击&#34;用&#34; mousedown&#34;它不再起作用了(我没有错误,没有任何反应)。

另一种解决方案是使用类似的东西:

$(map.getViewport()).bind("mousedown", function(e) { });

但我似乎无法通过这种方法获得坐标。我找到了map.getEventPixel(e),有没有办法将它转换为地图上的实际坐标?

LE:我真正需要的是获得点击持续时间(就像有人按住鼠标几秒钟一样),所以如果有办法在没有mousedown / mouseup的情况下执行此操作,我将采取任何措施建议。

1 个答案:

答案 0 :(得分:0)

OpenLayers ol.Map对象包含可以使用click方法收听的事件,例如singleclickon。请参阅此处的列表(查找“活动”):http://openlayers.org/en/v3.13.1/apidoc/ol.MapBrowserEvent.html

查看使用示例:http://openlayers.org/en/v3.13.1/examples/popup.html和一个代码段(请参阅evt参数包含您要查找的coordinate

  /**
   * Add a click handler to the map to render the popup.
   */
  map.on('singleclick', function(evt) {
    var coordinate = evt.coordinate;
    var hdms = ol.coordinate.toStringHDMS(ol.proj.transform(
        coordinate, 'EPSG:3857', 'EPSG:4326'));

    content.innerHTML = '<p>You clicked here:</p><code>' + hdms +
        '</code>';
    overlay.setPosition(coordinate);
  });

您可能还有兴趣阅读如何取消监听这些事件:How to delete a listener in OpenLayers 3