Google Map InfoWindow不会总是在移动模式下打开,而是总是在桌面模式下打开

时间:2018-09-11 18:11:01

标签: javascript google-maps mobile

我使用“ body onload”通过php和mysql获取Google地图标记。所有标记都有使用“鼠标悬停”来打开它们的信息窗口:

    google.maps.event.addListener(markerComm, 'mouseover', function () {
        infoWindow.setContent(markerDetails);
        infoWindow.open(map, markerComm);
    });

在桌面模式下,无论标记数量如何,鼠标悬停都会始终打开信息窗口。但是,在移动模式下,仅当有很多标记(例如20+)时,点击标记才会打开信息窗口。

当只有几个FEW标记并且使用Chrome开发者工具从移动模式切换到桌面模式而又不刷新页面时,会发生以下情况:

  • 信息窗口始终在桌面模式下正常打开。
  • 切换到移动模式,点击信息窗口将不会打开。
  • 切换回桌面模式后,它们会再次正常打开。
  • 在各种模式之间来回切换多次:始终在台式机上可用,但在移动设备上不可用。
  • 在桌面模式下打开信息窗口时,然后我切换到移动模式,该信息窗口仍处于打开状态,但是可以通过点击“ x”将其关闭。但是,点击重新打开将不起作用。

刷新页面并在桌面模式下启动时,偶尔会发生异常。有时,当切换到移动模式时,点击信息窗口会打开,但是我很少能做到这一点。

观看控制台日志,这似乎是某种计时问题。我尝试将函数从onload移到推迟外部js文件(在头部和标签之前),但都没有帮助。

关于这种情况为什么发生或如何纠正的任何想法?预先感谢!

2 个答案:

答案 0 :(得分:0)

我添加了一个点击侦听器,它现在可以在移动设备上正常运行:

    google.maps.event.addListener(markerComm, 'mouseover', function () {
        infoWindow.setContent(markerDetails);
        infoWindow.open(map, markerComm);
    });
    google.maps.event.addListener(markerComm, 'click', function () {
        infoWindow.setContent(markerDetails);
        infoWindow.open(map, markerComm);
    });

我曾经尝试过以这种方式添加点击,但这种方式不起作用:

    google.maps.event.addListener(markerComm, 'click mouseover', function () {

答案 1 :(得分:0)

我发现我需要做的就是更改 acfmap.js 文件中的一行:

原文:

google.maps.event.addListener(marker, 'mouseover', function() {

新:

google.maps.event.addListener(marker, 'click', function() {

刚刚将鼠标悬停更改为单击,因此它可以在移动设备和桌面设备上运行。