我有一个基于RichFaces 3.3.3的网络应用程序,它使用谷歌地图(maps-api v3),直到最近一直运行良好。
最近无法绘制地图的用户控件。地图绘制正常,但控件不会出现,例如地图类型或缩放控件。
调查一下,似乎与prototype.js的兼容性问题。
如果您只是将此行添加到developers.google.com中的示例:
<script src="http://prototypejs.org/assets/2008/9/29/prototype-1.6.0.3.js"></script>
Chrome浏览器中的控制台记录了这个:
Uncaught TypeError: undefined is not a function prototype-1.6.0.3.js:641
用户控制消失......
有人知道如何解决这个问题吗?
现在我将尝试在richfaces中更改prototype.js以获得更新的版本......当我知道更多时,我会更新。
提前致谢!
---更新---
---更新2 ---
换句话说,在你的页面中使用它来保护与prototype-1.6.0.3.js的兼容性:
<script src="https://maps.googleapis.com/maps/api/js?v=3.17"></script>
答案 0 :(得分:8)
今天早上我遇到了同样的问题。得到相同的错误,像缩放控件这样的控件不会渲染。我将prototype.js从版本(1.7)升级到最新版本(1.7.2),然后又重新开始了。我使用谷歌地图api V3,生产版本。不知道是不是更新版本的prototype.js,或者谷歌改变了什么,然后修改了一些东西,但现在很开心。
答案 1 :(得分:3)
是!!我的解决方案是更改以下行:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false" />
到
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&v=3" />
谢谢!
答案 2 :(得分:0)
更改为版本v3,与原型的冲突将消失,我在我的网站上尝试过,它运行正常。
答案 3 :(得分:0)
prototype.js中第629行的这个函数导致异常。只需添加try catch块,如下所示。它适用于任何Google Maps API。
collect: function(iterator, context) {
iterator = iterator ? iterator.bind(context) : Prototype.K;
var results = [];
try {
this.each(function(value, index) {
results.push(iterator(value, index));
});
} catch (err) {}
return results;
}
&#13;