我在rails 3中使用geokit gem和plugin。似乎它们有一个已知的问题,可以在这里http://github.com/andre/geokit-rails/issues#issue/15看到。
现在,我尝试按照底部提供的解决方案进行操作。我将函数定义粘贴到文件的末尾,就在acts_as_mapable的上方,在第一次调用它之后,但每次都没有任何反应。
你知道还能做什么吗?
谢谢
发布于 2011-09-06 13:23:56
对于那些仍然对geokit有问题的人,我转向使用mongodb……它有内置的距离搜索和所有...
发布于 2010-10-13 02:28:59
我在将我的应用升级到Rails3时遇到了类似的问题。我仍然在使用Geokit进行地理编码,但活动记录范围用于基于距离的数据库查询。这是非常方便的,而且你仍然可以得到所有的活动记录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/
发布于 2011-04-20 10:46:05
jlecour's port to rails 3应该可以解决你去年遇到的任何问题。
如果您正在进行距离计算,请确保使用的是mysql或postgres。
https://stackoverflow.com/questions/3472706
复制相似问题