2012-01-17 4 views
1

Я установил gmaps4rails gem для моих рельсы 3.1.1 приложение. Когда я генерировать карту с помощью Google Maps все работает отлично, но потом, когда я изменить свой код в целях: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 

Просмотр в источник моей сгенерированной страницы дает мне информацию о JavaScripts в настоящее время включены в головной части которой являются:

<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 %>
я, видимо, получить карты скрипты Google:

<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 Maps, то следующее:

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

Я надеюсь, что Бесполезный Не пропустите что-либо в документации, которую я пытался пропустить много раз, но не нашел никакого упоминания об этом.

+0

Хорошо, я решил это, загрузив OpenLayers.js и поместив его в папку lib/assets/javascript. Я пропустил что-то в документации, и это должно быть сделано иначе или это «правильная процедура»? –

+0

это была ошибка в gem ... Спасибо и +1 – apneadiving

ответ

Смежные вопросы