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

问题描述 投票:0回答:5

我有一个基于 RichFaces 3.3.3 的 Web 应用程序,该应用程序使用 Google 地图 (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 浏览器中的 js 控制台会记录以下内容:

Uncaught TypeError: undefined is not a function prototype-1.6.0.3.js:641

用户控件消失...

有人知道如何解决这个问题吗?

现在我将尝试更改 richfaces 中的prototype.js以获得更现代的版本...当我了解更多时我会更新。

提前致谢!

--- 更新 ---

    使用谷歌地图的生产版本解决了这个问题。现在有必要在 script 标签的 src 中显式放置 v=3 。谢谢莫勒博士。
  • 将prototypejs更新到(1.7.2)。实验效果也很好。谢谢@eepete。
--- 更新 2 ---

    如果您需要使用这个旧版本的原型,则使用 v=3 不再适用于 richfaces 3.3.3 (prototype-1.6.0.3.js),现在您需要在 google 地图中显式使用 v=3.17。
换句话说,在您的页面中使用它来实现与prototype-1.6.0.3.js 的后端兼容性:

<script src="https://maps.googleapis.com/maps/api/js?v=3.17"></script>
    
google-maps google-maps-api-3 richfaces prototypejs
5个回答
8
投票
今天早上我也遇到了同样的问题。遇到同样的错误,缩放控件等控件不会呈现。我将prototype.js从版本(1.7)升级到最新版本(1.7.2),一切又恢复正常了。我正在使用谷歌地图 API V3,生产版本。不知道这是新版本的prototype.js还是Google改变了一些东西然后修复了一些东西,但现在很高兴。


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" />

谢谢!!


0
投票
更改为v3版本,与prototype的冲突就会消失,我在我的网站上尝试过,效果很好。


0
投票
prototype.js 中第 629 行的这个函数导致了异常。只需添加 try catch 块,如下所示。它适用于任何 Google 地图 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; }


0
投票
添加参数 v=3.xx 在 2024 年 4 月将过时

© www.soinside.com 2019 - 2024. All rights reserved.