我正在查看https://developers.google.com/maps/documentation/javascript/events使用 Chrome 开发者工具的设备模式。当我触摸 map 时,明显会触发点击事件。
我有一个基于 Cordova 的 Angular 应用程序,其中包含 Google Maps JavaScript API (3)。我试图在触摸 map 的位置放置一个标记,但是当我自己订阅点击事件时,它永远不会被触发。
_map = new google.maps.Map(element, {
center: {
lat: -34.397,
lng: 150.644
},
disableDoubleClickZoom: true,
mapTypeControl: false,
streetViewControl: false,
zoom: 8
});
google.maps.event.addListener(_map, 'click', function(event) {
console.log('This never happens');
});
有趣的是,dblclick
事件确实适用于触摸。我可以利用 mousedown
来让触摸工作,但由于这也会在您开始拖动时触发,因此这并不是一个真正的选择。使用鼠标时一切正常。
非常感谢任何有关此处错误的线索!
最佳答案
Google map 往往无法识别触摸事件,一个有用的解决方法是绑定(bind) mousedown
事件而不是单击。
google.maps.event.addListener(_map, 'mousedown', function(event) {
console.log("Can't touch this");
});
已编辑 正如劳伦斯在评论中所说,触摸事件和双击都不适用于触摸设备。 我想到了一种可能的解决方法:
在获取 map 之前检测触摸事件并仍然绑定(bind)点击事件
var isTouch = 'ontouchstart' in document.documentElement;
google.maps.event.addListener(map, 'click', function(event) {
if(isTouch)
console.log("Touched");
else
console.log("Can't touch this");
});
关于javascript - 使用触摸设备时,Google map 上不会触发点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30901562/