所以,我必须承认我是rails的新手,所以我担心我可能会错过一些非常明显的东西,但是我一直得到错误消息与Gmaps4Rails gem。环顾四周,我在任何地方都找不到这个问题,所以我想我已经忘记了一些非常重要的事情,以至于其他人似乎都没有这个问题。
我知道我很接近了,因为每当我刷新页面时,整个事情都会神奇地工作,所以,我知道这是一个时间问题。我也使用Bootstrap,如果有帮助的话。
我一直得到的错误信息是:
在'Document'上执行'write'失败:除非显式打开外部脚本,否则无法从异步加载的外部脚本写入文档。
查看代码:
<strong>Map:</strong>
<div id="map-canvas"/></div>
<% content_for :scripts do %>
<script src="//maps.google.com/maps/api/js?v=3.13&sensor=false&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>
<script type="text/javascript">
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map-canvas'}}, function(){
markers = handler.addMarkers(<%= raw @hash.to_json %>)
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
});
</script>
<% end %>
Application.html。erb代码:
<body>
<ul class="nav nav-tabs">
<li><%= link_to 'Services', services_path %></li>
<li><%= link_to 'Users', users_path %></li>
<li><%= link_to 'Sign In', user_sessions_new_path %></li>
<li><%= link_to "Log Out", logout_path, method: :delete %></li>
<li>You are signed in as : <%= session[:username] %></li>
</ul>
<%= yield %>
<%= yield :scripts %>
</body>
控制器代码:def index
@services = Service.all
@hash = Gmaps4rails.build_markers(@services) do |service, marker|
marker.lat service.lat
marker.lng service.long
end
end
所以,我尝试过的一些事情包括:
- 在google maps api脚本中加入'callback=initialize',并在页面加载后调用onload
- 把脚本放在几乎所有你能想到的地方
还有一些来自互联网的人,但他们都不工作,叹气。请建议。
尝试在dom ready上运行脚本,使用jquery,它是:
$(function() {
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map-canvas'}}, function(){
markers = handler.addMarkers(<%= raw @hash.to_json %>)
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
});
})