如何在一个静态地图上有多个标记?

时间:2015-01-17 05:24:39

标签: ruby-on-rails google-maps google-static-maps

我正在尝试在一个静态地图上放置多个标记。

我正在使用geocoder gem(关注railscast tutorial)。管理以实现这一目标。

现在,我正在尝试将所有标记循环到索引页面上的一个地图上,但它会分别显示每个地图。

这是索引页面上的代码:

<% @locations.each do |location| %> 
<%= image_tag "http://maps.google.com/maps/api/staticmap?size=450x300&sensor=false&zoom=15&markers=#{location.latitude}%2C#{location.longitude}" %>
<% end %>

如何循环显示这些标记,以便所有标记显示在一个地图上而不是每个单独的长度/纬度的地图上?

任何建议都将不胜感激,请让我知道我需要包括哪些进一步的信息。

2 个答案:

答案 0 :(得分:4)

它会分别显示每个地图,因为您为每个标记打印图像。你想要的是一个URL,并为每个标记添加&markers=#{location.latitude}%2C#{location.longitude}

所以你的代码应该是这样的:

<% my_url = "http://maps.google.com/maps/api/staticmap?size=450x300&sensor=false&zoom=15" %>
<% @locations.each do |location| %> 
<% my_url += "&markers=#{location.latitude}%2C#{location.longitude}" %>    
<% end %>
<%= image_tag my_url %>

答案 1 :(得分:0)

Matej的回答是正确的,但是从帮助者那里调用它会更好。这样的事可能

  def nice_gmap_static(location)
    center = "#{location.latitude},#{location.longitude}"
    "https://maps.googleapis.com/maps/api/staticmap?center=#{center}&size=300x300&zoom=17&markers=#{location.latitude}%2C#{location.longitude}"
  end