【发布时间】:2012-05-07 16:28:10
【问题描述】:
我目前正在尝试将backbone.js 和gmaps4rails 放在我的rails 项目中,但我在地图初始化时遇到了问题。
我有日志消息可以看到我的路由器工作正常并且从主干端到达视图。现在我在我的视图主干文件中并尝试初始化 Gmaps4RailsGoogle 包装器。
在我的 rails 视图中,我正在为 gmaps4rails 生成 div,如下所示:
<%= content_tag "div", class: "map_container" do %>
<%= content_tag "div", id: "map" do %>
<% end %>
<% end %>
我无法在我的视图中加载地图,这是代码:
console.log "Loading map..."
Gmaps.map = new Gmaps4RailsGoogle()
Gmaps.load_map = ->
Gmaps.map.map_options.auto_adjust = true
Gmaps.map.initialize()
Gmaps.map.markers markers
Gmaps.map.markers_conf.do_clustering = true
Gmaps.map.create_markers()
Gmaps.map.adjustMapToBounds()
Gmaps.map.callback()
Gmaps.loadMaps()
我知道 loadMaps() 调用应该是 onload,但这似乎已经发生了。那我应该把它放在哪里?
我看到了日志,但在控制台上它告诉我以下错误:
google is not defined
http://localhost:3000/assets/gmaps4rails/gmaps4rails.googlemaps.js?body=1
Line 74
是否可以让 gmaps4rails 生成所有必要的脚本,然后访问从主干.js 中提供的变量?
如果这些信息还不够,请告诉我需要哪些信息。
谢谢, 谢尔斯基
【问题讨论】:
-
我现在刚刚在 index.html.erb 中使用了
<%= gmaps({ "map_options" => { "zoom" => 15, "auto_adjust" => false, "detect_location" => true, "center_on_user" => true }}, false, true) %>来生成正确的 div 并加载 googlescripts。并将咖啡脚本重构为只设置像这样的标记 `Gmaps.map.addMarkers @collection.model Gmaps.map.showMarkers()` 但是,为什么不编译为 js(在更正缩进之后)? -
根据你的描述,google的js api好像没有加载。它包含在您的页面中吗?顺便说一句,gmaps4rails 和任何 js 库之间没有不兼容。
-
旁注,如果您只有一张地图,
Gmaps.loadMaps()等效于Gmaps.load_map(),并且不是必须在页面加载时触发它。
标签: ruby-on-rails ruby-on-rails-3 backbone.js gmaps4rails