2011-07-05 61 views
2

我遇到以下問題。Geokit/Geocoder中的距離和範圍計算

考慮2種機型的屬性:

Place 
- lat 
- lng 
- range 

User 
- lat 
- lng 

地方有位置和定義一定範圍內(想想航運的區域)。用戶有他自己的位置。

我使用Geocoder進行地理定位(我也可以使用Geokit)。我可以計算距離物體的距離(類似object.distance_to([lat,lng])

現在,我想選擇所有範圍包含我的位置的地方。在更高級別:我想知道,哪些地方爲我的位置提供送貨服務。

這是當我在尋找在給定範圍內的對象的集合更容易。但我需要的東西「逆轉」,是從另一個側面。

什麼方法/範圍應我寫嗎?也許Geocoder/Geokit已經有東西已經爲我?

回答

2

最後我還沒有發現任何東西在寶石,但我寫了以下方法

class User < ActiveRecord::Base 
    #... 
    def in_reach?(place) 
    place.distance_to([lat,lng]) <= place.range 
    end 
end