在Rails3中使用as_json将点自动编码到Geojson [英] Automatically encode points to geojson with as_json in rails3

查看:0
本文介绍了在Rails3中使用as_json将点自动编码到Geojson的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用的一项Rails服务要求在我们的json响应中将点作为GeoJSON对象返回。在我们的应用程序中,我们使用rgeo和mysql2空间适配器来表示这些点,如果可能的话,我想使用rgeo-gejson gem来处理编码(我们已经在POST中使用它来解码Geojson)。

我目前正在使用以下代码覆盖as_json以实现此目的:

   def as_json(params)
     l = {:lat_lng => ::RGeo::GeoJSON.encode(lat_lng)}
     self.attributes.merge(l).as_json
   end
但是,这并不是最佳选择,因为缺少根(例如对象:{})。有没有一个函数可以很容易地包含它?(我们的很多型号都关联了lat_lng,所以我不想硬编码)。

对于Ruby/Rails初学者的任何提示,我们都将不胜感激

推荐答案

对于后人,我在收到几个关于它的报告后,在版本0.3.4的"rgeo-active verecord"gem中修复了这个问题。默认情况下,它在WKT中呈现空间列。要将其切换到GeoJSON,请设置:

RGeo::ActiveRecord::GeometryMixin.set_json_generator(:geojson)

NielsV的答案有时有效,但不是每次都有效。具体地说,它将适用于地理工厂(即PostGIS中的几何柱),但不适用于GEOS支持的工厂。

这篇关于在Rails3中使用as_json将点自动编码到Geojson的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆