因此,这个问题仅涉及旧的 Android 浏览器(在 chrome 成为标准浏览器之前)和 google map javascript api v3。
我正在开发一个网站,以及一个带有 WebView 的应用程序,显示该网站(部分)。
最近,网站中包含的谷歌地图窗口已停止正常工作。 map 显示了,但 map 上的任何触摸事件(例如拖动 map 以显示其他位置)以及两指缩放都不再起作用。 JavaScript 控制台中显示的错误( map 上的每个触摸事件)是:
Uncaught TypeError: Illegal constructor -- From line 125 of http://maps.googleapis.com/maps-api-v3/api/js/26/2/intl/nl_ALL/common.js
在我的代码中寻找错误几天后,在我看来,这可能是谷歌地图 javascript api 中的错误。该错误不仅发生在我的网站上,而且发生在我能找到的所有嵌入式谷歌地图上。即使在 google 自己的 api 文档中也是如此。 该错误仅发生在旧的标准 Android 浏览器中,但旧的 Android 版本仍在使用中,而且我无法告诉我的用户切换到另一个浏览器,因为它也必须在 WebView 中工作。
我可以在此链接中的 samsung xcover 2(gt-s7710、android 4.1.2)和 api 17 模拟器(android 4.2)上可靠地重现此问题:https://developers.google.com/maps/documentation/javascript/
还有其他人遇到过这个问题和/或找到解决方法吗?
编辑:
我提交了bug report谷歌已接受,所以与此同时,我认为 Dvy Hrnsch 的解决方法是最好的解决方案!
最佳答案
我遇到了和你描述的同样的问题。
说明:
至少我找到了一个简单的解决方法(在头痛了几个小时之后)。
我刚刚发现,Google Maps Javascript API 有 3 个 API 引用。
“实验版”、“发布版”和“卡住版”。
如果您添加 API 时未指定确切版本,则默认情况下它将使用“实验版本”。
正如我所注意到的,这个版本 (3.26) 于 2016 年 8 月 30 日进行了更新,这似乎导致了该错误。
解决方案:
只需更改您的 API:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?key=API-KEY&libraries=geometry,places"></script>
至
src="http://maps.google.com/maps/api/js?v=3&key=API-KEY&libraries=geometry,places"
现在使用 API 的“发布版本”(最后一次更改于 2016 年 8 月 17 日)。
来源:https://developers.google.com/maps/documentation/javascript/versions
对我来说,它现在可以在带有 cordova 的 Android 4.3(API 级别 18)上运行。
希望这对您也有帮助。
最美好的祝愿
关于javascript - Google map javascript api bug android 浏览器(Jelly bean 及之前版本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39268830/