使用触摸设备时,点击事件不会在Google地图上触发

时间:2015-06-17 20:16:26

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

我正在使用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来触摸工作,但由于这也会在您开始拖动时触发,这实际上不是一个选项。使用鼠标时,一切都完美无瑕。

非常感谢任何有关错误的线索!

2 个答案:

答案 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而不是点击。