繁体   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