谷歌地图标记链接

时间:2013-11-19 04:26:43

标签: ruby-on-rails google-maps ruby-on-rails-3.2 gmaps4rails

我正在尝试将我的标记作为与其关联的每个页面的链接。到目前为止,我已设法在信息框中放置一个链接,但我想绕过这个,只是将标记作为链接。我正在使用gmaps4rails gem。

控制器

@hash = Gmaps4rails.build_markers(@soiltemps) do |soiltemps, marker|
      location_link = view_context.link_to soiltemps.site, soiltemp_path(soiltemps)
      marker.lat soiltemps.latitude
      marker.lng soiltemps.longitude
      marker.picture({"url" => "/logo.png",
                      "width" =>  36,
                      "height" => 36})
      marker.infowindow "<h4><u>#{location_link}</u></h4> "
    end

2 个答案:

答案 0 :(得分:1)

你可以这样做:

@hash = Gmaps4rails.build_markers(@soiltemps) do |soiltemps, marker|
  marker.lat soiltemps.latitude
  marker.lng soiltemps.longitude
  marker.picture({"url" => "/logo.png",
                  "width" =>  36,
                  "height" => 36})
  marker.json({ link: soiltemp_url(soiltemps) })
end

并在js中添加侦听器:

markers_json = <%=raw @hash.to_json %>;
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
  markers = handler.addMarkers(markers_json);
  handler.bounds.extendWith(markers);

  for (var i = 0; i < markers.length; i++) {
    link = markers_json[i].link;
    google.maps.event.addListener(markers[i].getServiceObject(), 'click', function(){
      window.open(link);
    })
  }

  handler.fitMapToBounds();
});

答案 1 :(得分:1)

对于带背面的同一窗口的网址 - 你可以这样做:

@hash = Gmaps4rails.build_markers(@soiltemps) do |soiltemps, marker|
  marker.lat soiltemps.latitude
  marker.lng soiltemps.longitude
  marker.picture({"url" => "/logo.png",
                  "width" =>  36,
                  "height" => 36})
  marker.json({ link: soiltemp_url(soiltemps) })
end

并在js中添加侦听器:

标志物

_json = <%=raw @hash.to_json %>;
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
  markers = handler.addMarkers(markers_json);
  handler.bounds.extendWith(markers);

  for (var i = 0; i < markers.length; i++) {
    link = markers_json[i].link;
    google.maps.event.addListener(markers[i].getServiceObject(), 'click', function(){
      window.location.assign(link);
    })
  }

  handler.fitMapToBounds();
});

有关窗口位置分配的更多信息(链接)

http://www.w3schools.com/jsref/met_loc_assign.asp