geokit-railsを使って距離で絞りながら距離でソートする

緯度経度から距離を計算するgeokit-railsの使い方

rails (4.1.0)
geokit-rails (2.0.1)

withinメソッドを使えば距離で絞れるけど距離で並ばない。
by_distanceメソッドを使えば近い順になるけど距離で絞れない。
みたいになってハマってた。

geokit-railsのREADMEみたらdistanceフィールドを自動生成するよ!って理解したんだけど、実行してもnilしか入ってない。
ライブラリのテストを見ると distanceカラムでソートしてるテストがコメントアウトされてたりschemaを見る限りdistanceは使ってない感。
=> https://github.com/geokit/geokit-rails/blob/master/test/acts_as_mappable_test.rb#L71 など


悩んだ末この両方を条件にするには

    Spot.where(id: Spot.within(distance, origin: self)). # 範囲内のスポットに絞る
      by_distance(origin: self). # 距離順にする
      where.not(id: self) # 自分自信は除く

みたいにチェインする感じで落ちついた。

結局distanceフィールドは不要は一切使っていなくて、acts_as_mappableクラスマクロの定義にすらいらない模様。
距離の計算にはlat,lngだけあればいいいみたい。