gmaps4rails javascript Не могу найти переменную: OpenLayers - PullRequest
1 голос
/ 17 января 2012

Я установил 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&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"}) %> 

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

1 Ответ

0 голосов
/ 20 января 2012

Ошибка, которую вы упомянули, исправлена ​​в 1.4.3.

...