我需要检测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的情况下执行此操作,我将采取任何措施建议。
答案 0 :(得分:0)
OpenLayers ol.Map
对象包含可以使用click
方法收听的事件,例如singleclick
和on
。请参阅此处的列表(查找“活动”):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