>我使用"body onload"来使用php和mysql获取Google地图标记。所有标记都有使用"鼠标悬停"打开它们的信息窗口:
google.maps.event.addListener(markerComm, 'mouseover', function () {
infoWindow.setContent(markerDetails);
infoWindow.open(map, markerComm);
});
在桌面模式下,无论标记的数量如何,鼠标悬停将始终打开信息窗口。但是,在移动模式下,只有在有很多标记(如 20+(时,点击标记才会打开信息窗口。
以下是当只有几个标记并且当我使用 Chrome 开发人员工具在不刷新页面的情况下从移动模式切换到桌面模式时发生的情况:
- 信息窗口始终在桌面模式下正确打开。
- 切换到移动模式,点击信息窗口时不会打开。
- 切换回桌面模式,它们再次正确打开。
- 在模式之间多次来回切换:始终适用于桌面,但不适用于移动设备。 当信息窗口
- 在桌面模式下打开时,然后我切换到移动模式,信息窗口仍然打开,但可以通过点击"x"将其关闭。但是,点击以重新打开将不起作用。
刷新页面并在桌面模式下启动时,偶尔会出现异常。有时切换到移动模式时,点击时信息窗口会打开,但我很少能做到这一点。
查看控制台日志,这一切似乎都是某种计时问题。我尝试将函数从加载移动到延迟外部 js 文件,无论是在头部还是在标签之前,但都没有帮助。
关于为什么会发生这种情况或如何纠正它的任何想法?提前感谢!
我添加了一个点击侦听器,它现在可以在移动设备上正常工作:
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 () {
我发现我需要做的就是更改 acfmap.js 文件中的一行:
源语言:
google.maps.event.addListener(marker, 'mouseover', function() {
新增功能:
google.maps.event.addListener(marker, 'click', function() {
只是将鼠标悬停更改为单击,因此它可以在移动设备和桌面设备上工作。