Rails访问模板中的javascript变量 - 谷歌地图

时间:2014-06-30 17:56:16

标签: javascript jquery ruby-on-rails google-maps google-maps-api-3

我尝试了一些东西:我有一个带标记的gMap。

在我的index我初始化我的谷歌地图,添加标记等等。一切正常。

在我的页面左侧,我会在地图上显示5个标志的信息(姓名,日期等)。

为此,我调用名为_timeline的模板。

当我点击一个元素时,我会做一个动作 - >移动地图。但是现在,每次我执行此操作时,地图都会重新加载(并且标记已经消失)。我只想看到地图移动到标记的中心。

但是让我们看看我的代码,这可能更简单:

我的index.html.erb

<div class="row">

        <% @statuses_t.each do |status| %>
       <%= render partial: "statuses/timeline", locals: { status: status } %>
      <% end %>

 </div>


<script type="text/javascript">

handler = Gmaps.build('Google');
handler.buildMap({
  provider: {
    disableDefaultUI: true
    // pass in other Google Maps API options here
  },
  internal: {
    id: 'map'
  }
},
function(){
  markers = handler.addMarkers((<%=raw @hash.to_json %>));
  handler.bounds.extendWith(markers);
  handler.fitMapToBounds();
}
);


</script>

handler 是gMap

statuses/timeline

中的

... # some things

<script type="text/javascript">

$(<%="timeline_div#{status.id}"%>).on("click", function() {
    var centerpoint = new google.maps.LatLng(<%=status.latitude%>, <%=status.longitude%>);
      gMap = new google.maps.Map(document.getElementById('map'));
      gMap.setZoom(13);    
      gMap.setCenter(centerpoint); // HERE
      gMap.setMapTypeId(google.maps.MapTypeId.ROADMAP); 
});

</script>

这会在点击该项目时创建一个新地图,问题是:我不想重新加载页面,我只想更改setCenter重新定位地图。

所以我想在模板中使用Index中的 handler 变量。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

所以

我的变量vas已经全局(模板有变量)

感谢评论,我必须做handler.map.centerOn(<%=status.latitude%>, <%=status.longitude%>)和那项工作