由于某些 JS 文件未加载,Gmaps4Rails 停止工作

Gmaps4Rails stopped working due some JS file not loading

我有一个用 RoR 编写的相对较旧的应用程序,我现在定期维护它 运行 Rails 4.2.6 和 Ruby 2.3.0 我还使用 gmaps4rails 在地图上显示各种标记。 突然之间,地图不再呈现。我假设这是由于某些已弃用的版本而发生的。

以下是 application.html.erb 文件中的行:

    <script src="https://maps.google.com/maps/api/js?v=3.13&amp;sensor=false&amp;libraries=geometry" type="text/javascript"></script>
<script src="https://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js" type="text/javascript"></script>
<script src="https://google-maps-utility-library-v3.googlecode.com/svn/trunk/richmarker/src/richmarker-compiled.js" type="text/javascript"></script>
    <script src="https://google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/src/infobox_packed.js" type="text/javascript"></script>

我想知道的是如何将这些链接更新到一些新版本,例如为什么要取回渲染的地图? 大幅更改整个应用程序代码并不是一个好的选择。

As Google moved the sources over to GitHub a while back, the new GitHub versions can be accessed from RawGit 通过使用以下脚本 urls:

https://cdn.rawgit.com/googlemaps/v3-utility-library/master/markerclustererplus/src/markerclusterer.js
https://cdn.rawgit.com/googlemaps/v3-utility-library/master/richmarker/src/richmarker-compiled.js
https://cdn.rawgit.com/googlemaps/v3-utility-library/master/infobox/src/infobox_packed.js

上面的MarkerClusterer脚本url links到标准版本的库,因为打包版本已经从主分支中删除。如果您仍想访问打包版本,可以通过将库的 2.1.2 版本作为目标来完成,如下所述。

在实例化 MarkerClusterer 以访问来自 GitHub:

的图像时,您可能还需要指定 imagePath 选项
var mc = new MarkerClusterer(map, markers, { 
    imagePath: 'https://cdn.rawgit.com/googlemaps/v3-utility-library/master/markerclustererplus/images/m' 
});

以下较早的 SO post 包含有关群集图像的 imagePath 引用的更多详细信息(虽然它指的是 MarkerClusterer 库,但详细信息也应适用于 MarkerClustererPlus 库):

虽然上面的 urls(带有 cdn 前缀)有 no traffic limits or throttling and the files are served via a super fast global CDN, please bear in mind that RawGit is a free hosting service and offers no uptime or support guarantees.

访问通过 GitHub 维护的文件在以下 SO 回答中有更详细的介绍:

Link and execute external JavaScript file hosted on GitHub

此 post 还涵盖了这一点,如果您 link 访问 GitHub 上的文件,在生产中您应该考虑将特定的发布标签定位到确保您获得脚本的特定发行版本。

例如,您可以使用以下脚本针对 MarkerClustererPlus 库的 2.1.2 版本(仍然包括打包版本)和 InfoBox 库的 1.1.13 版本 urls:

https://cdn.rawgit.com/googlemaps/v3-utility-library/markerclustererplus/2.1.2/src/markerclusterer_packed.js
https://cdn.rawgit.com/googlemaps/v3-utility-library/infobox/1.1.13/src/infobox_packed.js

但是,由于此 GitHub 存储库的保管人尚未为 RichMarker 库创建任何版本,因此目前无法 link 直接到特定的RichMarker 发布.

在这种情况下,您应该认真考虑下载该库及其资源并将其直接包含在您的项目中以用于生产目的。