Я относительный нуб, но мне было весело интегрировать gmaps4rails в мой проект. Я столкнулся с проблемой, которая может быть ошибкой в драгоценном камне, или это может быть просто мое невежество, но я надеюсь, что кто-то может указать мне правильное направление.
У меня есть домашняя страница с элементом пользовательского интерфейса jquery tab. Одна вкладка содержит представление списка историй, а вторая - отображение этих историй на карте. Я использую gmaps4rails в представлении карты.
На странице перезагрузите все истории, которые соответствуют моим критериям поиска, появляются в моем списке и карте, как и ожидалось. Мои проблемы возникают, когда я пытаюсь использовать Gmaps.map.addMarkers ().
Допустим, я добавляю новую историю, которая соответствует моим параметрам поиска. Действие моих историй # create устанавливает переменную @story, как и ожидалось, а затем я устанавливаю переменную @marker следующим образом:
@markers = @story.to_gmaps4rails
Затем мое представление create.js.erb вставляет @story соответствующим образом в представление моей вкладки списка. К сожалению, Gmaps.map.addMarkers (@marker) не вставляет маркер в представление вкладки карты.
Вот еще один соответствующий код:
story.rb:
class Story < ActiveRecord::Base
acts_as_api
acts_as_gmappable :process_geocoding => false
def gmaps4rails_marker_picture
{
"rich_marker" => "<div class='story_marker' id=marker_for_story_#{self.id } ><img height='30' width='30' src='http://farm4.static.flickr.com/3212/3012579547_097e27ced9_m.jpg'/></div>"
}
end
create.js.erb:
$("#stories_list").prepend("<%=raw escape_javascript(render(@story)) %>"); //put new story in list view
<%= logger.debug("!!!!!!!!!! gmaps json array: #{@marker}")%>
Gmaps.map.addMarkers(@marker);
home.html.erb:
<div id="map-tab">
<%= yield :head %> <!-- for gmaps4rails -->
<%= gmaps("markers" => { "data" => @json, "options" => { "clusterer_gridSize" => 5, "clusterer_maxZoom" => 13 } }) %>
</div>
Когда я проверяю консоль после вызова create.js.erb, я вижу, что @marker содержит правильную информацию массива json. Я могу скопировать эту информацию прямо из консоли, а затем использовать консоль firebug для запуска addMarkers (скопированная информация о массиве json), и маркер отобразится, как и ожидалось. Кроме того, я могу изменить команду addMarkers в моем файле create.js.erb, чтобы она выглядела следующим образом, что также работает: Gmaps.map.addMarkers([{"lng": "<%=@story.longitude%>", "lat": "<%=@story.latitude %>"}]);
Но я бы лучше использовал помощник to_gmaps4rails.
Спасибо за любую помощь, которую вы можете дать мне, чтобы разгадать эту тайну, и счастливых праздников!