Картограф показывает правильное информационное окно, НО над неправильным маркером - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь создать карту с маркерами для дозаторов, извлеченных из БД.Я могу успешно сделать это, однако, когда я нажимаю на маркеры, информационное окно всегда появляется над одним и тем же маркером.Информационное окно ПРАВИЛЬНОГО диспенсера появляется на карте, но над неправильным маркером!Кто-нибудь сталкивался с этой проблемой?

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

def find_map

    @location = Location.new
    @location.address = params[:location][:address]
    @latlon = @location.geocode
    @dispensers = Dispenser.near(@latlon)
    @numrecords = 0
    @lat = []
    @long = []
    @user_id = []
    @dispensers.each do |x|
      @lat[@numrecords] = x.latitude
      @long[@numrecords] = x.longitude
      @user_id[@numrecords] = x.user_id
      @numrecords += 1
    end 

    @map = Cartographer::Gmap.new( 'map')
    @map.zoom = :bound
    @icon = Cartographer::Gicon.new()
    @map.icons <<  @icon

    @count = 0
    @numrecords.times do 
      markername = "marker#{@count}"
      markername = Cartographer::Gmarker.new(:name=> "Business", :marker_type => "Building",
                             :position => [@lat[@count], @long[@count]],
                             :info_window_url => "/bio/#{@user_id[@count]}", :icon => @icon)

      @map.markers << markername
      @count += 1
    end

В моем show.html.erb

  <%= raw Cartographer::Header.new.to_s %>
  <%= raw @map.to_html %>

  <div style="width:350px;height:250px;" id="map" > [Map]</div> 

1 Ответ

0 голосов
/ 12 марта 2012

Отличная новость, я понял это.В приведенном ниже коде мне пришлось добавить # {@ count} к названию компании ... Я предполагаю, что местоположение маркера установлено с помощью позиции, а местоположение информационного блока установлено на маркер с таким же атрибутом: name, который предположительнопоследний маркер, созданный циклом.

Спасибо!

markername = Cartographer::Gmarker.new(:name=> "Business#{@count}", :marker_type => "Building",
                             :position => [@lat[@count], @long[@count]],
                             :info_window_url => "/bio/#{@user_id[@count]}", :icon => @icon)
...