一尘不染

触摸事件不适用于Angular中的Google Maps

angularjs

我在有角度的应用程序中使用Google Maps javascript API。在带有鼠标的常规台式机上使用Google
Chrome浏览器中的应用程序时,各种导航功能(平移/缩放)可以在应用程序的Google Maps部分正常工作。但是,当我尝试在Windows
8.1屏幕上使用触摸手势时,地图无法识别任何平移或缩放手势。如果我捏变焦,什么也不会发生。如果我像鼠标一样在屏幕上双击,则地图将放大。如果我用手指拖动,浏览器窗口将处理触摸事件,而不是地图div,因此左右导航页面历史记录以及上下拖动滚动条整个页面,而不是平移地图。

作为另一个实验,我尝试在Chrome内使用Google地图http://maps.google.com本身,并且工作正常。因此,这意味着可以通过某种方式完成…。

那么,它是视口元标记类型的东西吗?还是与地图元素的大小有关?还是这是一件棱角分明的事情,我们需要以某种方式使用ngTouch来使应用程序响应触摸事件吗?

更新: 触摸事件 确实
在iPad的同一页面上起作用。我不确定该说什么,但令人鼓舞的是至少它可以在移动Safari中使用。似乎我们需要与Angular进行交流,以使其接受触摸事件。

更新

该问题已在错误中处理

https://issuetracker.google.com/issues/35824421

并于2016年12月在3.27版的Google Maps JavaScript API中解决。


阅读 250

收藏
2020-07-04

共1个答案

一尘不染

实际上,这是一个Google Map错误#6425

有趣的事实是Google Map API不会根据用户代理提供相同的内容。因此,对于某些用例,解决方法是通过以下方式欺骗用户代理ether:

  • Chrome开发者工具>仿真>模型
  • 用户代理欺骗扩展
  • --user-agent chrome标志

任何Android或iOS设备都可以使用,将默认的桌面Google Map应用更改为类似移动设备的应用。拖放功能将再次在此类似移动设备的应用上运行。

经过一些测试,切换到类似移动应用程序的最小UA是“ Chrome”或“ AppleWebKit /
537”,但是使用它听起来很危险,因为将来可能会发生很大变化。

对我来说,基于铬的kioks,可以解决问题,直到修复了错误。

2020-07-04