我一直在使用GeoKit for Rails,它的效果很好。但是,我注意到,當拉大量的列表時,它加載非常緩慢。geokit - 在導軌中使用原始的經緯度
我不知道是否是因爲它返回結果之前查詢谷歌或一些外部源。如果是這樣的話,有沒有辦法使用原始緯度座標(我有)來簡單地計算內部距離?
還是一個簡單的紅寶石公式,會爲我做到這一點?
我一直在使用GeoKit for Rails,它的效果很好。但是,我注意到,當拉大量的列表時,它加載非常緩慢。geokit - 在導軌中使用原始的經緯度
我不知道是否是因爲它返回結果之前查詢谷歌或一些外部源。如果是這樣的話,有沒有辦法使用原始緯度座標(我有)來簡單地計算內部距離?
還是一個簡單的紅寶石公式,會爲我做到這一點?
距離上:
Geokit寶石提供了一種方法來計算兩個點之間的距離:
# model has acts_as_mappable
Model.distance_between obj1, obj2, :units => :kms, :formula => :sphere
搜索明智:
Geokit-軌(插件)具有產生SQL(爲MySQL,postgres的,和SQL服務器)的取景器來計算distan CES上,讓你找到在一定距離內的行:
Model.find_within(100, :units => :kms)
它計算所有行的距離,但並不需要查詢的外部資源。如果您的表確實是巨大的它可以幫助(但我不能肯定它會)通過計算預緯度/經度範圍縮小範圍第一:
Model.where(:lat => (x-0.05)..(x+0.05), :lng => (y-0.05)..(y+0.05)).find_within(z, :units => :kms)
如果仍然不能幫助你將不得不編寫一些定製的SQL。對於geokit護欄的SQL距離計算的位置: https://github.com/andre/geokit-rails/tree/master/lib/geokit-rails/adapters
謝謝 - 是否有任何其他的不太準確forumlas(較便宜的那是當然的,) – stewart715
我很困惑 - 做什麼和OBJ1代表OBJ2,如果我已經在一個模型中調用它? – stewart715
你在類上調用它(它是一個類方法),'obj1'和'obj2'是實例。 – jimworm
可以使用公式球體計算表面上的兩個點的距離。
下面是一些JavaScript實現用於計算緯度/經度之間(和其他一些有用的東西)的距離。應該不會太大大腦工作的翻譯紅寶石;-)
你是什麼意思的「拉清單」嗎?你是否試圖在一定距離內找到模型的所有實例? – jimworm
耶正是 – stewart715