0

次の 2 つの場所の例に従いました。

しかし、どちらも機能しません。どちらに対しても何も返ってきません。現在、RoR 3.2.8 で gmaps4rails の 1.5.5 バージョンを使用しています。

show_map.js.erb

$('#map_container').show();
$('#map_container').html('<%= escape_javascript( gmaps({:last_map => false}) ) %>');
Gmaps.map = new Gmaps4RailsGoogle();

Gmaps.load_map = function() {
  Gmaps.map.map_options.maxZoom = 15;
  Gmaps.map.initialize();
  Gmaps.map.create_markers();
  Gmaps.map.adjustMapToBounds();
  Gmaps.map.markers = <%= @json %>;
  Gmaps.map.callback();
};
Gmaps.loadMaps();

users_controller.rb

  def show_map
    @user = User.first
    @json = @user.to_gmaps4rails
    respond_to do |format|
      format.js {}
    end
  end

show.html.haml

  = link_to "Map", show_map_path, :remote => true
  #map_container{:style => 'display:none;'}

ご協力いただきありがとうございます!

4

1 に答える 1

2

私はと同じ問題を抱えており@persistence、このスレッドで報告することを好みます。私は最初に両方のwikiの例に従おうとし、次に@apneadivingコメントに固執してあなたの要点に従いましたが、それでも要点から何かが欠けています。このコードをコントローラーに配置します。

events_controller

def index
    @json = Event.all.to_gmaps4rails do |event, marker|
        marker.title        event.title
        marker.infowindow   event.description
        marker.sidebar      'This is a side bar'
    end
    p @json
    respond_with @json
end

そして私の見解では、要点の正確なコードを貼り付けます。ロードボタンを押すと、コンソールでjson情報に問題がないことを確認しましたが、Javascriptエラーのためにマップがロードされていません。

TypeError: Gmaps.map is undefined

マップのJavascript初期化のようなものが欠けていると思いますか?

2012年5月11日更新:

それは確かに問題でした。要旨とウィキの両方の例のJavaScriptを組み合わせて、次のコードをビューに配置することでこの作業を行いました。

index_view

<!-- create html + load js files but don't create map itself: will be done after ajax call -->
<%= gmaps({:last_map => false}) %>
<br/>

<!-- button to trigger ajax call -->
<button type="button" id="ajax">Load Map</button>

<script type="text/javascript" charset="utf-8">
$(function() {

    //hide the empty container
    $(".map_container").hide();

    // Map initialization
    Gmaps.map = new Gmaps4RailsGoogle();
    Gmaps.load_map = function() {
         Gmaps.map.map_options.maxZoom = 15;
         Gmaps.map.initialize();
         Gmaps.map.create_markers();
         Gmaps.map.adjustMapToBounds();
         Gmaps.map.callback();
    };

    $("#ajax").click(function(){
         $.getJSON('/events', function(json){
              $(".map_container").show();
              Gmaps.loadMaps();
              Gmaps.map.addMarkers(json);
         })
    })
});
</script>

また、GitHubにGmaps4Railsマップをロードする簡単な例をいくつか残しました:https ://github.com/daviddefco/Gmaps4RailsS​​amples.git

  1. 部分的なHTMLの使用
  2. HTMLボタンによってトリガーされたAJAXリクエストの使用(要点の例)
  3. Javascriptアクション内でのAJAXリクエストの使用(wikiの例)

私はRoRとJavascriptの初心者なので、コメントやコードの改善を歓迎します。

于 2012-10-31T10:08:20.337 に答える