4

アプリで小さな問題が発生しました。私は現在 geokit を使用して、特定の場所の近くにあるオブジェクトを検索しています。また、見つかったセットで sort_by_distance_from を使用しています。

下記参照:

@find = Item.find(:all, :origin =>[self.geocode.lat.to_f,self.geocode.lng.to_f], :within=>50, :include=>[:programs], :conditions=>["programs.name = ?", self.name])
  @find.sort_by_distance_from([self.geocode.lat.to_f,self.geocode.lng.to_f]

距離でソートするときに、gekit を使用して DB からページ付けする方法はありますか?

別名、完全な対象セットを呼び出していませんか?

4

2 に答える 2

1

距離列はもう機能していません:

「現在のバージョンの geokit-rails では、distance 列を使用して where 句を追加することはできません。これを行うためにさまざまな方法を試しましたが、うまくいきませんでした。」

where 句と order 句についても同じように動作します。

次のようなクエリを作成すると予想されます。

scoped  = Location.geo_scope(:origin => @somewhere)
scoped  = scoped.where('distance <= 5')
results = scoped.all

これは今のところ不可能です。次のように 1 つの手順で行う必要があります。

scoped = Location.within(5, :origin => @somewhere)
results = scoped.all

github.com/geokit/geokit-rails

于 2015-10-20T15:58:04.927 に答える
0

これを解決するための私のアプローチでは、find()に:offsetパラメーターと:limitパラメーターを使用します。

また、geokitモデルの距離フィールド:order =>'distance asc'

例えば。

page = 0 unless params[:page]
items_per_page = 20
offset = page * items_per_page
@find = Item.find(:all, :origin =>[self.geocode.lat.to_f,self.geocode.lng.to_f], :within=>50, :include=>[:programs], :conditions=>["programs.name = ?", self.name], :order => 'distance asc', :limit => items_per_page, :offset => page)
于 2010-10-15T08:15:20.010 に答える