【问题标题】:gmaps4rails javascript Can't find variable: OpenLayersgmaps4rails javascript找不到变量:OpenLayers
【发布时间】: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>

但随后在页面上,在地图容器标记之后,其中有&lt;%= yield :scripts %&gt;
我显然得到了谷歌地图脚本:

<script type="text/javascript" src="//maps.google.com/maps/api/js?v=3.5&sensor=false&amp;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


【解决方案1】:

你提到的这个bug在1.4.3已经修复了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多