我似乎无法为触摸事件添加事件侦听器。只有moveend被解雇了。
map.on('zoomend', mapEvent);
map.on('moveend', mapEvent);
map.on('touchmove', mapEvent);
map.on('touchstart', mapEvent);
这些都不起作用
map = new ol.Map({
eventListeners: {
"zoomend": mapEvent,
"changelayer": mapEvent,
"changebaselayer": mapEvent,
"mousedown": mapEvent,
"touchmove": mapEvent
},
这会导致错误 - " Uncaught TypeError:无法读取属性'注册'未定义"
map.events.register('touchmove', map, function(e) {
console.log("touchmove")
});
map.events.register('touchend', map, function(e) {
console.log("touchend")
});
所以现在我完全迷失了??
答案 0 :(得分:3)
这正是应该发生的事情!
除了moveend
之外,您列出的所有这些事件在OpenLayers 3.6.0上都不存在。此外,eventListeners
下的配置选项 ol.Map
不存在。
您可以在official API docs上查看ol.Map
的所有活动和配置选项。这些事件列在 Fires
部分。
此外,请检查此JSFiddle以查看其他一些事件(pointermove
,pointerdrag
)。在Chrome上,您还可以使用开发人员工具(F12)模拟触控设备,看看会发生什么。
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
collapsible: false
})
}),
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
map.on('moveend', function(e) {
console.log("moveend")
});
map.on('pointermove', function(e) {
console.log("pointermove")
});
map.on('pointerdrag', function(e) {
console.log("pointerdrag")
});