2012-01-17 44 views
1

我安裝了gmaps4rails寶石我的導軌3.1.1應用程序。當我使用生成的地圖谷歌地圖一切工作正常,但後來,當我的看法改變我的代碼:gmaps4rails javascript無法找到變量:OpenLayers

<%= gmaps("markers" => {"data" => @locations}, "map_options" => { "provider" => "openlayers"}) %> 

我得到的以下錯誤JavaScript控制檯在Safari:

ReferenceError: Can't find variable: 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 +乘客和Bundler

JavaScript錯誤(無法找到變量:OpenLayers)正在從gmaps4rails.openlayers.js:41中引發,我可以在開發時看到javascripts未被壓縮。

我包括的openlayers.js庫的application.js如文檔中提到的在GitHub上:

//= require gmaps4rails/openlayers.js 

查看我產生頁的源給了我關於被包括在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> 

但後來在頁面上,地圖容器標籤,其中有後0
我顯然得到了谷歌地圖的腳本:

<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"}) %> 

我希望我沒有我錯過了多次嘗試過的文檔中的任何內容,但沒有發現任何提及。

+0

好吧,我已經通過下載OpenLayers.js並將其放到我的lib/assets/javascript文件夾中解決了這個問題。我錯過了文檔中的某些內容,它應該以不同的方式完成,還是這是「正確的過程」? – 2012-01-17 12:25:22

+0

這是寶石中的錯誤...感謝和+1 – apneadiving 2012-01-19 22:05:40

回答