【发布时间】:2012-01-17 11:41:44
【问题描述】:
我为我的 rails 3.1.1 应用程序安装了 gmaps4rails gem。当我使用谷歌地图生成地图时,一切正常,但是,当我将视图中的代码更改为:
<%= gmaps("markers" => {"data" => @locations}, "map_options" => { "provider" => "openlayers"}) %>
我在 Safari 的 javascript 控制台 中收到以下错误:
ReferenceError:找不到变量:OpenLayers
下面是 application.rb 中允许使用资产管道的部分:
config.assets.enabled = true config.assets.version = '1.0'
我在生产模式下运行应用程序:
config.assets.compress = true
config.assets.debug = true
config.assets.digest = false
在开发模式下:
config.serve_static_assets = true
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
但它不起作用。我正在使用 Apache + Passenger 和 Bundler。
从 gmaps4rails.openlayers.js:41 抛出 javascript 错误(找不到变量:OpenLayers),当 javascript 没有被压缩时,我可以在开发中看到。
我在 application.js 中包含了 openlayers.js 库,如 github 上的文档中所述:
//= require gmaps4rails/openlayers.js
查看 我生成的页面的源代码 为我提供了有关包含在 head 部分中的 javascript 的信息,它们是:
<script src="/assets/gmaps4rails/gmaps4rails.base.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.openlayers.js?body=1" type="text/javascript"</script>
<script src="/assets/gmaps4rails/openlayers.js?body=1" type="text/javascript"></script>
但随后在页面上,在地图容器标记之后,其中有<%= yield :scripts %>
我显然得到了谷歌地图脚本:
<script type="text/javascript" src="//maps.google.com/maps/api/js?v=3.5&sensor=false&libraries=geometry"></script>
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/src/infobox_packed.js"></script>
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.5/src/markerclusterer_packed.js"></script>
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/trunk/richmarker/src/richmarker-compiled.js"></script>
<script type="text/javascript" charset="utf-8">
Gmaps.map = new Gmaps4RailsOpenlayers();
Gmaps.load_map = function() {
Gmaps.map.map_options.provider = "openlayers";
Gmaps.map.initialize();
Gmaps.map.markers = [];
Gmaps.map.create_markers();
Gmaps.map.adjustMapToBounds();
Gmaps.map.callback();
};
window.onload = function() { Gmaps.loadMaps(); };
</script>
是否还需要进行一些配置才能使用 OpenLayers 地图,然后:
<%= gmaps("markers" => {"data" => @locations}, "map_options" => { "provider" => "openlayers"}) %>
我希望我没有错过文档中的任何内容,我尝试多次阅读但没有找到任何关于此的提及..
【问题讨论】:
-
好的,我已经通过下载 OpenLayers.js 并将其放入我的 lib/assets/javascript 文件夹中解决了这个问题。我是否遗漏了文档中的某些内容,应该以不同的方式完成,还是这是“正确的程序”?
-
这是 gem 中的一个错误...谢谢和 +1
标签: ruby-on-rails openlayers asset-pipeline gmaps4rails