簡體   English   中英

Geokit和rails 3

[英]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。

在Rails 3.1上安裝geokit-rails3 gem之后出現問題,我移動到了地理編碼器gem 它也有距離計算(一定不要忘記@ your_model.nearby * s *(5)中的s )。 還有一個Railscast

這是geokit到rails 3的端口,不完整通過:

https://github.com/jlecour/geokit-rails3

對於仍然遇到geokit問題的人,我繼續使用mongodb ...它有內置距離搜索n ...

嘿阿米特,不確定你是否已將其整理出來,但我會告訴你我做了什么以防萬一。

我分叉了andre的geokit-rails源,然后在本地克隆它,並在lib/geokit-rails/acts-as-mappable.rb34行添加了這個要點的代碼,就在讀取module ClassMethods # :nodoc:

然后我將這些更改提交回github上的forked repo並使用我的fork將源代碼作為插件安裝到我的rails 3 app。 這似乎可以直接使用,但請確保將acts_as_mappable行添加到您想要進行距離計算的任何模型中,並確保在該db上有兩個名為:lat:lng 浮點列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM