在rails3中使用as_json自动将点编码为geojson

|| 我目前正在使用的Rails服务要求将点作为JSON响应中的GeoJSON对象返回。我们正在使用rgeo和mysql2spatial适配器来表示应用程序中的这些点,如果可能的话,我想使用rgeo-geojson gem处理编码(我们已经在发布时使用它来解码geojson)。 我目前正在使用以下代码覆盖as_json以实现此目的:
   def as_json(params)
     l = {:lat_lng => ::RGeo::GeoJSON.encode(lat_lng)}
     self.attributes.merge(l).as_json
   end
但是,由于缺少根(例如对象:{}),因此这不是最佳选择。有可以轻松包含它的功能吗? (我们的许多模型都有lat_lng关联,因此我宁愿不对其进行硬编码)。 红宝石/轨道初学者的任何提示将不胜感激     
已邀请:
为了后代,在获得多个报告后,我在“ rgeo-activerecord \” gem版本0.3.4中修复了此问题。默认情况下,它将在WKT中渲染空间列。要将其切换到GeoJSON,请进行以下设置:
RGeo::ActiveRecord::GeometryMixin.set_json_generator(:geojson)
NielsV的答案有时会有效,但并非每次都有效。具体来说,它适用于地理工厂(即PostGIS中的几何列),但不适用于GEOS支持的工厂。     
您可以通过在以下代码行中包含root来指定它:
ActiveRecord::Base.include_root_in_json = true
我希望这有帮助。     
我通过使用Point的as_json方法扩展RGEO库来解决此问题,这样做不再需要在我自己的模型中覆盖as_json。不过谢谢您的回应。
module RGeo
  module Feature
    module Point
      def as_json(params)
        ::RGeo::GeoJSON.encode(self)
      end
    end
  end
end
    

要回复问题请先登录注册