Google Maps和Richfaces 3.3.3(prototype.js 1.6.0.3)可能不兼容

时间:2014-08-26 12:23:53

标签: google-maps google-maps-api-3 richfaces prototypejs

我有一个基于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以获得更新的版本......当我知道更多时,我会更新。

提前致谢!

---更新---

  • 使用Google地图的生产版解决了这个问题。现在有必要在脚本标记的src中明确地输入v = 3。谢谢Dr.Molle。
  • 将prototypejs更新为(1.7.2)。与实验一起工作也很好。谢谢@eepete。

---更新2 ---

  • 使用v = 3不再使用richfaces 3.3.3(prototype-1.6.0.3.js)如果你需要使用这个旧版本的原型,现在你需要在谷歌地图中明确使用v = 3.17。

换句话说,在你的页面中使用它来保护与prototype-1.6.0.3.js的兼容性:

<script src="https://maps.googleapis.com/maps/api/js?v=3.17"></script>

4 个答案:

答案 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。

&#13;
&#13;
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;
&#13;
&#13;