[英]Geokit and rails 3
我正在使用帶有rails 3的geokit gem和插件。看起來有一個已知的問題,可以在這里看到http://github.com/andre/geokit-rails/issues#issue/15
現在,我嘗試按照底部提供的解決方案。 我將該函數定義粘貼在文件末尾,就在acts_as_mapable之上,並且在第一次調用它之后,但每次都沒有發生任何事情。
知道還能做些什么嗎?
謝謝
我遇到類似的問題將我的應用程序升級到rails 3.我仍然使用Geokit進行地理編碼,但Active Record范圍用於基於距離的數據庫查詢。 它非常方便,你仍然可以獲得所有Active Record 3的優點。 以下是我的用戶模型中的示例:
scope :near, lambda{ |*args|
origin = *args.first[:origin]
if (origin).is_a?(Array)
origin_lat, origin_lng = origin
else
origin_lat, origin_lng = origin.lat, origin.lng
end
origin_lat, origin_lng = deg2rad(origin_lat), deg2rad(origin_lng)
within = *args.first[:within]
{
:conditions => %(
(ACOS(COS(#{origin_lat})*COS(#{origin_lng})*COS(RADIANS(users.lat))*COS(RADIANS(users.lng))+
COS(#{origin_lat})*SIN(#{origin_lng})*COS(RADIANS(users.lat))*SIN(RADIANS(users.lng))+
SIN(#{origin_lat})*SIN(RADIANS(users.lat)))*3963) <= #{within}
),
:select => %( users.*,
(ACOS(COS(#{origin_lat})*COS(#{origin_lng})*COS(RADIANS(users.lat))*COS(RADIANS(users.lng))+
COS(#{origin_lat})*SIN(#{origin_lng})*COS(RADIANS(users.lat))*SIN(RADIANS(users.lng))+
SIN(#{origin_lat})*SIN(RADIANS(users.lat)))*3963) AS distance
)
}
}
這是一篇關於這個主題的更多細節的博客文章: http : //stcorbett.com/code/distance-queries-with-rails-3-without-geokit/
jlecour的rails 3的端口應解決你去年遇到的任何問題。
如果你正在進行距離計算,請確保使用mysql或postgres。
這是geokit到rails 3的端口,不完整通過:
對於仍然遇到geokit問題的人,我繼續使用mongodb ...它有內置距離搜索n ...
嘿阿米特,不確定你是否已將其整理出來,但我會告訴你我做了什么以防萬一。
我分叉了andre的geokit-rails源,然后在本地克隆它,並在lib/geokit-rails/acts-as-mappable.rb
第34
行添加了這個要點的代碼,就在讀取module ClassMethods # :nodoc:
。
然后我將這些更改提交回github上的forked repo並使用我的fork將源代碼作為插件安裝到我的rails 3 app。 這似乎可以直接使用,但請確保將acts_as_mappable
行添加到您想要進行距離計算的任何模型中,並確保在該db上有兩個名為:lat
和:lng
浮點列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.