Я установил gmaps4rails gem для моего приложения rails 3.1.1 .Когда я создаю карту с помощью Google Maps, все работает нормально, но затем, когда я изменяю свой код в представлении на:
<%= gmaps("markers" => {"data" => @locations}, "map_options" => { "provider" => "openlayers"}) %>
, я получаю следующую ошибку в консоли javascript вSafari:
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 + пассажирский и Bundler .
Ошибка javascript (не удается найти переменную: OpenLayers) выдается из gmaps4rails.openlayers.js: 41, которую я вижу в разработке, когда сценарии javascript не сжимаются.
Я включаю библиотеку openlayers.js в application.js , как указано в документации по github:
//= require gmaps4rails/openlayers.js
Просмотр источника моего сгенерированногостраница дает мне информацию о включении javascript-кодов в раздел head:
<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>
Но потом на странице, после тега контейнера карты, где in имел <%= yield :scripts %>
Я, очевидно, получаю скрипты Google Maps:
<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"}) %>
Надеюсь, яничего не пропустил в документации, которую я пытался пройти несколько раз, но не нашел упоминаний об этом ..