0

ユーザーを gmaps4rails の同じマーカーに結合する方法がわかりません。私はやや近づいているように感じますが、gmaps4rails ヘルパーの使用、JSON への変換、および部分的なレンダリングの間で何が間違っているのか正確に把握できません。

def map
   distinct_locations = User.where("location IS NOT NULL").select("DISTINCT(LOCATION)").map(&:location)
   @markers = []
   distinct_locations.each do |city|
     temp_marker = User.where(:location => city).first.to_gmaps4rails
     city_users = User.where(:location => city)
     render_to_string(:partial => "/users/map_marker_info", :locals => { :users => city_users})
     @markers << temp_marker
   end
   @markers
end

ご覧のとおり、私のコントローラーでは、まず、都市名の配列 (「ニューヨーク、ニューヨーク」など) である、distinct_locations の配列を取得します。

次に、@markers最終的に返す JSON を保持する を作成します。

私が見つけたユニークな都市ごとに、最初に to_gmaps4rails ヘルパーを使用して、その都市で最初に見つけたユーザーを使用してマーカーを作成しようとしています。次に、市内の他のすべてのユーザーを見つけようとしています ( city_users = User.where(:location => city).

次に、同じ都市のこのユーザーのコレクションを使用して、今のところ次のようなパーシャルをレンダリングしようとしています (ただし、最終的にはユーザーから異なる属性を取得します)。

#_map_marker_info.html.haml
.map_info_window
  %h4
    =users.first.location
  %p
    =users.count

最後に、@markers各都市が処理された後にマーカーを追加します。

最終的に@markers、すばらしい gmaps4rails gem のおかげで美しいマップになる JSON として返されます。

私は多くのことを間違っていると確信しています(そしておそらく多くのことを非効率的にしています)...しかし、誰かがそれを機能させるために私を助けることができますか?

4

1 に答える 1

0

ええと、質問を投稿した後に物事が具体化する瞬間の 1 つにすぎません。とにかく、ここに私が持っているものがあります。(ただし、より効率的な回答を提供する人々にはまだ開放されています)。この「カスタム マーカー」は、公式ドキュメントと非常によく似ています: https://github.com/apneadiving/Google-Maps-for-Rails/wiki/Controller

def map
    @markers = User.select("DISTINCT ON (location) *").where("location IS NOT NULL").all.to_gmaps4rails do |user, marker|
      city_users = User.where(:location => user.location)
      marker.infowindow render_to_string(:partial => "/users/map_marker_info", :locals => { :users => city_users })
    end
end

基本的に、個別の場所に基づいてユーザーを選択します (実際には、to_gmaps4railsヘルパーが機能するために緯度と経度の列のみが必要です。また、場所を持たない人の nil 値を削除しました。

次に、基本的に「場所」ごとにマーカーを作成しますが、ローカルの場合は同じ場所のすべてのユーザーを渡します。それcity_usersが、同じ都市のすべてのユーザーのためのものです。

これで、パーシャルで次のようなことができます。

.map_info_window
  %h4
    =users.count
    in
    =users.first.location
  -users.each do |user|
    =link_to user.full_name, user
于 2013-09-19T07:03:40.887 に答える