javascript - 使用触摸设备时,Google map 上不会触发点击事件

标签 javascript google-maps google-maps-api-3

我正在查看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/

相关文章:

javascript - 如何在 Angular 2+ 中获取 json 数据

ios - 如何在 swift iOS 中编写正确的目标选择器?

javascript - 为谷歌地图 API 中的现有标记添加信息窗口

google-maps - 如何将kml多边形几何数据转换为谷歌多边形坐标

javascript - 如何从Google Geocoding API仅获取administrative_area_level_2?

javascript - 查询/JS : replace a row in a table

javascript - 如何将 html5 Canvas 图像转换为 json 对象?

javascript - 如何从二维数组中提取列?

javascript - 如何在没有外部库的情况下监听 Google Maps API 事件?

firefox - Google Maps v3 仅在 FIREFOX 中在右键单击事件中缩小