2014-11-03 3 views
0

У меня есть приложение Rails 3.2.x, которое я использую gmaps4rails 2.0.0.pre (да, я знаю, что это старая версия). Я использую это для построения различных транспортных средств (единиц) на карте в режиме просмотра/контроллера gps. Теперь я пытаюсь использовать gmaps4rails для отображения карты в другом представлении/контроллере для отображения местоположения здания (объекта) в представлении просмотра объекта.gmaps4rails change map id

При загрузке начальной страницы я отображаю маркер объекта на карте в нужном месте. Однако через несколько секунд маркер полностью исчезнет. Я знаю, почему это происходит, но не как это исправить.

У меня есть следующий Coffeescript, который выглядит для ID из #map и вызывает /units и /gps пути для обновления вида GPS/карту в квази-реальном времени.

gps.js.coffee

$ -> 
    if $("#map").length > 0 
    setInterval (-> 
     $.getScript "/units" 

    # Get all current locations, find each marker in the map, and update it's position 
    $.getJSON "/gps", (data) -> 
    $.each(data, (i, val) -> 
     marker = $.grep Gmaps.map.markers, (e) -> 
     e.id is val.id 
     marker[0].setPosition(val.lat, val.lng) if marker[0]? 
    ) 
), 5000 

$('.marker-link').on 'click', -> 
    id = $(this).data("marker-id") 
    marker = $.grep Gmaps.map.markers, (e) -> 
    e.id is id 

    marker[0].showInfowindow() if marker[0]? 

Таким образом, проблема заключается в том, что по умолчанию ID для gmaps4rails отображений #map. Я пытаюсь понять, как создать новую карту с помощью плагина с другим ID, чтобы я мог отобразить местоположение объекта и не вызывать coffeescript для обновления.

Вот что выглядит моя модель объекта/вид/контроллер. Все работает, но маркер исчезает из-за сценария кофе, вызывающего #map. Я не хочу потерять эту функциональность coffeescript, так как она обновляет представление gps show с помощью маркеров. Я хотел бы выяснить способ создания карты gmaps4rails и изменить ID.

facility.rb

acts_as_gmappable process_geocoding: false 

facilities_controller

def show 
    @facility = Facility.find(params[:id]) 
    @marker = @facility.to_gmaps4rails do |facility, marker| 
     #marker.infowindow render_to_string(partial: "unit_infowindow", locals: {unit: unit}) 
     marker.json({id: facility.id}) 
    end 
     respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @marker } 
    end 
    end 

объект show.html.erb

<div class="well"> 
    <%= gmaps(markers: {data: @marker, options: {rich_marker: true, "auto_zoom" => false}}) %> 
</div> 

Есть ли способ генерации карты gmaps4rails и переопределить значение по умолчанию ID#map, чтобы я мог оставить маркер от исчезновения и продолжать использовать мой кофейник в моем GPS-режиме?

Если у кого-либо есть предложения, сообщите мне. Буду весьма признателен за это.

И если мой вопрос запутан или нуждается в дополнительном объяснении, я буду рад его обновить.

ответ

1

Я думаю, что я понял, как переопределить ID от #map в gmaps4rails.

Установив :map_options на ID из facility_map, мой кофейник не срабатывает на этом изображении, и маркер остается статическим, как я хотел.

<div class="well"> 
    <%= gmaps(markers: {data: @marker, options: {rich_marker: true}}, :map_options => {:id => "facility_map"}) %> 
</div> 

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