代码之家  ›  专栏  ›  技术社区  ›  Amit

地理套件和轨道3

  •  4
  • Amit  · 技术社区  · 14 年前

    http://github.com/andre/geokit-rails/issues#issue/15

    现在,我试着按照下面提供的解决方案。我在文件末尾粘贴了函数定义,就在第一次调用它之后,它的上方是可映射的,但是每次都没有发生任何事情。

    谢谢

    6 回复  |  直到 14 年前
        1
  •  7
  •   stcorbett    14 年前

    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/

        2
  •  4
  •   Brian Jordan Eli Bendersky    13 年前

    jlecour's port to rails 3 应该能解决你去年遇到的问题。

    如果你在计算距离的话,一定要使用mysql或postgres。

        3
  •  3
  •   dirkb    13 年前

    在rails3.1上安装geokit-rails3 gem出现问题之后,我转到 geocoder gem . 它也有距离计算(一定不要忘记@your中的s)_附近的模型* s *(5)). 还有一个 Railscast

        4
  •  1
  •   yawl    14 年前

    这是geokit到rails 3的端口,通过:

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

        5
  •  1
  •   Amit    13 年前

        6
  •  0
  •   erskingardner    14 年前

    嘿,阿米特,不知道你是否解决了这个问题,但我会告诉你我做了什么以防万一。

    我分叉了andre的geokitrails源代码,然后在本地克隆了它,并从中添加了代码 this gist at线 34 属于 lib/geokit-rails/acts-as-mappable.rb ,就在写着 module ClassMethods # :nodoc: .

    acts_as_mappable 线添加到任何模型,你想做距离计算,并确保你有两个 浮动 数据库中名为 :lat :lng .

    推荐文章