1

我目前正在尝试将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 中提供的变量?

如果这些信息还不够,请告诉我需要哪些信息。

谢谢, 凯尔斯基

4

1 回答 1

1

我已经找到了问题的答案,或者至少找到了部分答案。我现在从 rails 的视图gmaps中使用以下调用:index.html.erb

<%= gmaps({ "map_options" => { "zoom" => 15,
                               "auto_adjust" => true,
                               "detect_location" => true,
                               "center_on_user" => true }}, false, true) %>

这将生成我现在从主干实际使用的所需 Gmaps 对象。我的主干视图模板现在是空的,感觉不对。要做到这一点,我需要在我的主干视图中设置 googlemaps。直到现在我还没有找到一个好的答案,但它是这样工作的。在我看来,我已经将初始化设置为监听集合重置,并告诉它调用我的函数来添加这样的标记:

initialize: ->
  @collection.on('reset', @loadMarkersOnMap, this)

render: ->
  ...

loadMarkersOnMap: ->
  Gmaps.map.addMarkers @collection.toJSON()
  Gmaps.map.showMarkers()

如果有人尝试这样做,希望这会有所帮助。我还想添加一个解决方案,用于移动调用以在我的主干文件中正确初始化 Gmaps4RailsX。有什么建议么?

于 2012-05-07T08:28:10.337 回答