我正在使用Chrome开发者工具的设备模式查看https://developers.google.com/maps/documentation/javascript/events。当我触摸地图时,点击事件会明显触发。
我有一个基于Cordova的Angular应用程序,其中包含Google Maps JavaScript API(3)。我试图在触摸地图的位置放置一个标记,但是当我自己订阅click事件时,它永远不会被触发。
_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
来触摸工作,但由于这也会在您开始拖动时触发,这实际上不是一个选项。使用鼠标时,一切都完美无瑕。
非常感谢任何有关错误的线索!
答案 0 :(得分:1)
Google地图往往不会识别触摸事件,有用的解决方法是绑定mousedown
事件而非点击。
google.maps.event.addListener(_map, 'mousedown', function(event) {
console.log("Can't touch this");
});
<强>被修改强>
正如劳伦斯在评论中所说,touch
事件和双击都是在触摸设备上工作。
我想过一个可能的解决方法:
在获取地图之前检测触摸事件并仍然绑定点击事件
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");
});
答案 1 :(得分:0)
尝试使用mousedown而不是点击。