【问题标题】:gmaps4rails in show view显示视图中的 gmaps4rails
【发布时间】:2014-08-19 00:26:35
【问题描述】:

我想在显示视图中放置一个 gmaps4rails 地图,但是在构建具有当前点位置的标记时遇到了问题。我找不到有关该主题的任何内容。有可能吗? (对不起,我是一个完整的初学者)

这就是我到目前为止所尝试的。

def show
 @comments = @spot.comments
 @photos = @spot.photos

@hash = Gmaps4rails.build_markers(@spot) do |spot, marker|
   marker.lat spot.latitude
   marker.lng spot.longitude
   marker.infowindow spot.name
end

编辑:

查看:

<script src="//maps.google.com/maps/api/js?v=3.13&amp;sensor=false&amp;libraries=geometry"          type="text/javascript"></script>
<script src='//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js' type='text/javascript'></script>


 <div class="container">
  <p id="notice"><%= notice %></p>
 <div class="row galleria">
 <%= render_gallery_for @photos %>
  </div>


<div style='width: 800px;'>
    <div id="map" style='width: 800px; height: 400px;'></div>
  </div>   

  <script type="text/javascript">
  handler = Gmaps.build('Google');
  handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
    var marker = handler.addMarker(<%=raw @hash.to_json %>);
   handler.map.centerOn(marker);
  }); 
</script>

...

【问题讨论】:

  • 几个问题...您的对象@spot 是否有latitudelongitude?我为此写了一个答案,可能对您有所帮助。 stackoverflow.com/a/24590199/2456549
  • @JustinLicata 是的,确实如此。当在索引视图中使用“spots”而不是“spot”时,这一切都有效。
  • 好的,您目前是否遇到错误? (也检查 javascript 控制台)。确保 @spot 已定义,确保您的 show.html.erb 具有适用于 GMap4Rails 的 javascript (markers = handler.addMarkers(&lt;%=raw @hash.to_json %&gt;);)
  • 你能解释一下定义 [@spot] 是什么意思吗
  • @spot = Spot.find(params[:id])。也许您可以从您的viewcontrollererrors 粘贴更多代码,这将有助于引导我们更快地找到答案,而不仅仅是假设错误可能是什么。跨度>

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


【解决方案1】:

您必须将 addMarker 替换为 addMarkers,因为您传递的 arg 是一个数组。

如果你传递一个对象,你可以使用addMarker


但如果您使用addMarkers,请将您的代码更改为:

 var markers = handler.addMarkers(<%=raw @hash.to_json %>);
 handler.map.centerOn(markers[0]);

See plunkr

【讨论】:

  • 好吧,仍然没有标记出现,我得到和以前一样的错误
  • 请再次提供您的html
  • 我想这是有趣的部分&lt;script type="text/javascript"&gt; handler = Gmaps.build('Google'); handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ var marker = handler.addMarkers([{"lat":50.05105700000001,"lng":19.941979}]); handler.map.centerOn(marker); }); &lt;/script&gt;
猜你喜欢
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2011-08-18
相关资源
最近更新 更多