目前我可以使用默认的“object.json”URL来获取WKT / WKB格式的JSON字符串.它看起来像这样:
{"description":null,"id":1,"position":"POINT (10.0 47.0)"}
但是现在我想要一个自定义MIME类型,所以我可以调用“object.geojson”来获取GeoJSON格式,如下所示:
{"description":null,"position":{"type":"Point","coordinates": [10.0,47.0]}}
我发现将JSON编码器设置为GeoJSON的唯一方法是使用RGeo :: ActiveRecord :: GeometryMixin.set_json_generator(:geojson)和RGeo :: ActiveRecord :: GeometryMixin.set_json_generator(:wkt)全局设置它.但我只是想在本地设置它,这可能吗?
我已经将mime :: Type.register“application / json”,:geojson,%w(text / x-json application / jsonrequest)添加到mime_types.rb并且它工作正常:我可以在我的控制器中使用此代码:
respond_to do |format| format.json { render json: @object } format.geojson { render text: "test" } end
我希望有人可以告诉我如何在不将全局JSON渲染器设置为:geojson的情况下将一些特定对象渲染到GeoJSON. !?
编辑:
我的对象在Rails控制台中看起来像这样:
#< Anchor id:1,description:nil,position:#< RGeo :: Geos :: CAPIPointImpl:0x3fc93970aac0“POINT(10.0 47.0)”>>
解决方法
factory = RGeo::GeoJSON::EntityFactory.instance feature = factory.feature(@object.position,nil,{ desc: @object.description})
编码:
RGeo::GeoJSON.encode feature
它应该输出这样的东西:
{ "type" => "Feature","geometry" => { "type" => "Point","coordinates"=>[1.0,1.0] },"properties" => { "description" => "something" } }
或者一系列功能:
RGeo::GeoJSON.encode factory.feature_collection(features)
赠送:
{ "type": "FeatureCollection","features": [ { "type": "Feature",# the rest of the feature... },{ "type": "Feature",# another feature... } }
原文地址:https://www.jb51.cc/ruby/264845.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。