我尝试了一些东西:我有一个带标记的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
变量。
我该怎么做?
答案 0 :(得分:0)
所以
我的变量vas已经全局(模板有变量)
感谢评论,我必须做handler.map.centerOn(<%=status.latitude%>, <%=status.longitude%>)
和那项工作