1

現在、railsプロジェクトでbackbone.jsとgmaps4railsを一緒にしようとしていますが、マップの初期化に問題があります。

ルーターが機能し、バックボーン側からビューに到達したことを確認するためのログメッセージがあります。これで、ビューバックボーンファイルに移動し、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()呼び出しをオンロードする必要があることは知っていますが、それはすでに行われているようです。それならどこに置けばいいの?

ログが表示されますが、コンソールに次のエラーが表示されます。

google is not defined
http://localhost:3000/assets/gmaps4rails/gmaps4rails.googlemaps.js?body=1
Line 74

gmaps4railsに必要なすべてのスクリプトインクルードを生成させてから、backbone.js内から提供された変数にアクセスさせることは可能ですか?

これらが十分でない場合、どのような情報が必要になるかを教えてください。

ありがとう、Kjellski

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 に答える