gmaps4rails показывает пустую карту с элементами управления картой

#ruby-on-rails #ruby #ruby-on-rails-3 #google-maps #gmaps4rails

#ruby-on-rails #ruby #ruby-on-rails-3 #google-карты #gmaps4rails

Вопрос:

Пытаюсь заставить gmaps4rails работать в проекте rails 3. У меня все настроено в соответствии с демонстрацией, но в моем представлении элементы управления картой отображаются только поверх серого фона, где должна быть карта. Пробовал это в Chrome и safari. Есть мысли?

В модели:

 acts_as_gmappable :process_geocoding => false

def gmaps4rails_address
  "#{address}, #{city}, #{state} #{zip}"
end
  

В контроллере:

 @venues = Venue.limit(5)
@venue_map_data = @venues.to_gmaps4rails
  

В представлении:

 <%= gmaps4rails(@venue_map_data) %>
  

В макете application.html.erb:

 <!DOCTYPE html>
<html>
<head>
  <title>MapTest</title>
  <%= stylesheet_link_tag :all %>
  <%= javascript_include_tag :defaults %>
  <%= csrf_meta_tag %>
  <%= yield :head %>
</head>
<body>
   <%= yield %>
   <%= yield :scripts %>
</body>
</html>
  

Материал Javascript:

 <script src="/javascripts/gmaps4rails.js" type="text/javascript"></script> 
<script type="text/javascript" src='http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclusterer/1.0/src/markerclusterer_compiled.js'></script> 
<script type="text/javascript" charset="utf-8"> 
function gmaps4rails_init() {
    Gmaps4Rails.map_options.auto_adjust = true;
    Gmaps4Rails.initialize();
    Gmaps4Rails.markers = [{"longitude": "37.742956", "latitude": "-122.421695"},
           {"longitude": "37.742668", "latitude": "-122.421735"},
           {"longitude": "37.742578", "latitude": "-122.42178"},
           {"longitude": "37.742862", "latitude": "-122.421575"},
           {"longitude": "37.743123", "latitude": "-122.421485"}];
    Gmaps4Rails.create_markers();
    if(typeof gmaps4rails_callback == 'function') { gmaps4rails_callback(); }
}

function gmaps4rails_loadScript() {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.google.com/maps/api/js?sensor=falseamp;libraries=geometryamp;callback=gmaps4rails_init";
    document.body.appendChild(script);
}

window.onload = gmaps4rails_loadScript;

</script> 
  

Данные о месте проведения, собранные в @venues:
имя, адрес, город, штат, почтовый индекс, широта, долгота
Ресторан Altena, 3346 Mission St, Сан-Франциско, Калифорния, 94110, -122.421695, 37.742956
ЛА Морена Латиноамериканская, 3391 Mission St, Сан-Франциско, Калифорния, 94110, -122.421735, 37.742668
Коста-дель-Соль II, 3385 Mission St, Сан-Франциско, Калифорния, 94110, -122.42178, 37.742578
Бар El Amigo, 3355 Mission St, Сан-Франциско, Калифорния, 94110, -122.421575, 37.742862
Клуб тридцати трехсот, 3300 Mission St, Сан-Франциско, Калифорния, 94110, -122.421485, 37.743123

Комментарии:

1. У вас есть yield: скрипты в нижнем колонтитуле? Не могли бы вы вставить созданный js?

2. У меня есть yield: scripts в нижнем колонтитуле и yield: head в заголовке.

Ответ №1:

Черт, только что получил это после 20 минут просмотра взад и вперед…

Ничего общего с драгоценным камнем: посмотрите на свои координаты:

 Gmaps4Rails.markers = [{"longitude": "37.742956", "latitude": "-122.421695"},
       {"longitude": "37.742668", "latitude": "-122.421735"},
       {"longitude": "37.742578", "latitude": "-122.42178"},
       {"longitude": "37.742862", "latitude": "-122.421575"},
       {"longitude": "37.743123", "latitude": "-122.421485"}]
  

Вы помещаете свои широты в таблицу долгот и наоборот.

Долгота = [-180, 180]

Широта = [-90, 90]

Комментарии:

1. Вы правы, сэр, это была ошибка в отдельной библиотеке геокодирования, которую я использовал, которая поменяла широту / lon. Спасибо! Кстати, отличная жемчужина.