【发布时间】:2018-12-09 20:17:58
【问题描述】:
我在 Active Admin 中使用 Gmaps4Rails(Google Maps for Rails)。到目前为止一切都很好,除了我不得不在同一个显示页面上添加多个地图。
gem 'gmaps4rails', '~> 2.1', '>= 2.1.2'
我将脚本的导入提取到一个我在显示视图中只调用一次的 html,因此我没有收到错误:
/views/admin/_map_include_scripts.html.erb
<script src="//maps.google.com/maps/api/js?key=<%= ENV['GOOGLE_KEY'] %>"></script>
<script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"></script>
<script src='//cdn.rawgit.com/printercu/google-maps-utility-library-v3-read-only/master/infobox/src/infobox_packed.js' type='text/javascript'></script>
然后在节目中我做:
div id: 'map' do
render '/admin/map_include_scripts'
markers = DeliveryMarkersService.new(delivery).orders_markers
render '/admin/map_scripts', markers: markers, map_div_id: 'map'
end
在views/admin/_map_scripts.html.erb 我有:
<script>
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: { id: '<%= map_div_id %>' }}, function(){
markers = handler.addMarkers(<%=raw markers.to_json %>);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
handler.getMap().setZoom(15);
});
</script>
到目前为止,它工作得很好!我看到了地图,标记,一切。
现在我想添加第二个 div 和第二个地图 所以首先我尝试将第一个 div 更改为以下内容,以验证我可以告诉 Gmaps 在哪个 div 中显示它:
div id: 'map2' do
render '/admin/map_include_scripts'
markers = DeliveryMarkersService.new(delivery).orders_markers
render '/admin/map_scripts', markers: markers, map_div_id: 'map2'
end
但是地图没有渲染!控制台上没有错误。 如果我确实发送了一个无效的 id(不存在的 div id),我会收到一个错误。
有人知道发生了什么吗?
【问题讨论】:
-
仅将第二张地图放入视图中是否有效?
-
如果我使用
map2作为 div 的 id 和名称,则不会