Openlayers 3 Openlayers 3中的Mousedown/Mouseup事件

Openlayers 3 Openlayers 3中的Mousedown/Mouseup事件,openlayers-3,Openlayers 3,我需要检测mousedown和mouseup事件,并在Openlayers 3地图上获取它们的坐标,但它似乎根本不起作用,我在文档中找不到任何关于这方面的信息 map.on('click', function(ev){ console.log(ev.coordinate);} ); 工作正常,并且得到了正确的位置,但是当我用“mousedown”替换“click”时,它就不再工作了(我没有得到任何错误,只是什么都没有发生) 另一个解决方案是使用以下方法: $(map.getViewport()

我需要检测mousedown和mouseup事件,并在Openlayers 3地图上获取它们的坐标,但它似乎根本不起作用,我在文档中找不到任何关于这方面的信息

map.on('click', function(ev){ console.log(ev.coordinate);} );
工作正常,并且得到了正确的位置,但是当我用“mousedown”替换“click”时,它就不再工作了(我没有得到任何错误,只是什么都没有发生)

另一个解决方案是使用以下方法:

$(map.getViewport()).bind("mousedown", function(e) { });
但我似乎无法用这种方法得到坐标了。我找到了map.getEventPixel(e),有没有办法把它转换成地图上的实际坐标


LE:我实际上需要的是获取点击持续时间(比如有人按住鼠标几秒钟),因此如果有一种方法可以不使用鼠标下移/mouseup来实现这一点,我会采纳任何建议。

OpenLayers
ol.Map
对象包含事件,例如
点击
单点击
,可以使用
方法收听。请参见此处的列表(查找“事件”):

请参阅用法示例:和代码段(请参阅
evt
参数包含要查找的
坐标:

  /**
   * 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);
  });

您可能还对阅读如何取消侦听这些事件感兴趣:

OpenLayers
ol.Map
对象包含事件,例如
单击
单击
,可以使用
on
方法侦听这些事件。请参阅此处的列表(查找“事件”):

请参阅用法示例:和代码段(请参阅
evt
参数包含要查找的
坐标:

  /**
   * 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);
  });

您可能还对阅读如何取消侦听这些事件感兴趣:

谢谢您的快速回复,但我需要分别检测mousedown和mouseup事件(这在openlayers 2中是受支持的,但根据本页,似乎不再有效)。因此,我想知道是否有人想出了这样做的方法。您可以尝试“pointerup”和“pointerdown”事件。请参阅:谢谢,pointerup和pointerdown正是我所需要的,它们似乎在PC和触摸屏上都能正常工作。您能否将此作为单独的答案添加,以便我可以将问题标记为已回答?谢谢您的快速回复回复,但我需要分别检测mousedown和mouseup事件(这在openlayers 2中是受支持的,但是根据这个页面,它似乎不再工作了)。因此,我想知道是否有人找到了这样做的方法。您可以尝试“pointerup”和“pointerdown”事件。请参阅:谢谢,pointerup和pointerdown正是我所需要的,它们似乎在PC和触摸屏上都能正常工作。您能否将此作为单独的答案添加,以便我可以将问题标记为已回答?