Let*_*ron 7 ruby-on-rails gmaps4rails
我在Active Admin中使用Gmaps4Rails(Google Maps for Rails).到目前为止一切都很好,除了我必须在同一个节目页面上添加多个地图.
gem 'gmaps4rails', '~> 2.1', '>= 2.1.2'
我将脚本的导入提取为一个html,我只在show视图中调用一次,所以我没有收到错误:
/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>
Run Code Online (Sandbox Code Playgroud)
然后在节目中我做:
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
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
到目前为止它工作得很棒!我看到地图,标记,一切.
现在我想添加第二个div与第二个map,所以我首先尝试将第一个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
Run Code Online (Sandbox Code Playgroud)
但是地图不会渲染!控制台没有错误.如果我确实发送了一个无效的id(div id不存在),我确实收到了错误.
有谁知道发生了什么?
您能具体说明“地图未渲染”是什么意思吗?它在页面或 DOM 上不可见?你检查过开发者工具中的源代码/DOM吗?如果您没有收到错误,可能它会渲染,但只是显示不正确,例如它的宽度/高度设置为 0?