Я установил 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&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"}) %>
Я надеюсь, что Бесполезный Не пропустите что-либо в документации, которую я пытался пропустить много раз, но не нашел никакого упоминания об этом.
Хорошо, я решил это, загрузив OpenLayers.js и поместив его в папку lib/assets/javascript. Я пропустил что-то в документации, и это должно быть сделано иначе или это «правильная процедура»? –
это была ошибка в gem ... Спасибо и +1 – apneadiving