Ami*_*mit 4 ruby-on-rails geokit
我正在使用带有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
)
}
}
Run Code Online (Sandbox Code Playgroud)
这是一篇关于这个主题的更多细节的博客文章:http: //stcorbett.com/code/distance-queries-with-rails-3-without-geokit/
| 归档时间: |
|
| 查看次数: |
6830 次 |
| 最近记录: |