所以,这个问题只涉及旧的android浏览器(在chrome成为标准浏览器之前)和google maps javascript api v3。
我正在开发一个网站,以及一个带有webview的应用程序,显示该网站的(部分)。
最近,网站中包含的Google地图窗口已停止正常工作。地图显示,但地图上的任何触摸事件,如拖动地图以显示其他位置,以及两个手指缩放都不再起作用。 javascript控制台中显示的错误(在地图上的每个触摸事件上)是:
Uncaught TypeError: Illegal constructor -- From line 125 of http://maps.googleapis.com/maps-api-v3/api/js/26/2/intl/nl_ALL/common.js
在我的代码中查找了几天的bug后,在我看来,这可能是谷歌地图javascript api中的一个错误。错误不仅发生在我的网站上,而且发生在我能找到的所有嵌入式谷歌地图上。即使在谷歌自己的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的解决方法是最好的解决方案!
答案 0 :(得分:2)
我遇到了和你描述的问题相同的问题。
<强>解释强>:
至少我找到了一个简单的解决方法(经过数小时的头痛)。
我刚刚发现,Google Maps Javascript API有3个API参考。
&#34;实验版&#34;,&#34;发布版&#34;和#34;冷冻版&#34;。
如果您在未指定确切版本的情况下包含API,则会使用&#34;实验版本&#34;默认情况下。
正如我注意到的,这个版本(3.26)在2016年8月30日得到了更新,这似乎导致了这个错误。
<强> SOLUTION:强>
只需更改您的API:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?key=API-KEY&libraries=geometry,places"></script>
到
SRC =&#34; HTTP://maps.google.com/maps/api/js的 V = 3 强>&安培;键= API-KEY&安培;库=几何,地点&#34 ;
现在使用&#34;发布版本&#34; (API的最后更改于2016年8月17日)。
来源:https://developers.google.com/maps/documentation/javascript/versions
对我而言,它现在适用于使用cordova的Android 4.3(API级别18)。
我希望这对你也有帮助。
祝福
答案 1 :(得分:1)
在我找到Dvy Hrnsch的回答之前几乎疯了。我想添加一些在这个问题上有用的信息:
如果缺少v = 3参数,使用WebView 534.30且可能较旧(属于Android 4.3及更早版本)的Android应用程序无法为Google Maps提供全部功能。虽然可以正确显示图表并按[+]和[ - ]进行放大和缩小,但是无法按下图表或使用点击事件。
对于较新的Android版本(使用WebView 537.36或更低版本),这些问题不会发生。
汤姆