我们发现在这篇文章中,Google Maps API V3是否支持触摸事件?这是真的还是假的? 更新 这个问题已经在bug中处理了。
https://issuetracker.google.com/issues/35824421
这个问题在2016年12月Google Maps JavaScript API的3.27版本中得到解决。
https://issuetracker.google.com/issues/35824421
这个问题在2016年12月Google Maps JavaScript API的3.27版本中得到解决。
依照我的经验,mousedown
、mouseup
、dragstart
和 dragend
事件可以很好地代替 touchstart
、touchmove
和 touchend
。
google.maps.event.addListener(myMap, "mousedown", function(event){...});
我很确定gesture
事件不会得到支持,因为这些事件被用于捏合缩放功能。
如果您需要手势,您必须通过跟踪mousedown事件,将它们存储在数组中,然后跟踪位置以确定角度、距离等来构建自己的识别器...
https://developers.google.com/maps/documentation/javascript/events#EventsOverview
这个页面还说明了以下内容:该页面中没有触摸相关的事件,因此不支持触摸事件。要获取完整的事件列表,请参阅Google Maps JavaScript API参考文档。
利用 mousedown
、mouseup
以及 e.domEvent.pointerType == "touch"
,可以检测事件类型:
map/marker.addListener("mousedown"/"mouseup", (e) => {
if(e.domEvent.pointerType == "touch") console.log("touch");
else console.log("mouse/pen")
});
注意:e.domEvent.pointerType
在mousemove
上不起作用(顺便说一下,它仅适用于地图而不是标记),因此我建议使用document.addEventListener()
来处理mousemove
/touchmove
事件,并标记地图/标记的当前鼠标/触摸按下/抬起状态以识别mousemove
事件类型。