我尝试使用geojson数据构建json。
在我的控制器中:
def index
....
respond_to do |format|
format.html
format.json { render json: { type: 'FeatureCollection', features: pois_geojson + tracks_geojson} }
end
和show
def show
...
respond_to do |format|
format.html
format.json { render json: { type: 'FeatureCollection', features: poi_geojson + track_geojson} }
end
对于索引,一切正常,我的json很好。我将此方法称为构建json。
展示方法
def poi_geojson
{
type: 'Feature',
RGeo::GeoJSON.encode(@poi.lonlat),
properties: {
name: @poi.name,
:'marker-color' => '#00607d',
:'marker-symbol' => 'circle',
:'marker-size' => 'medium'
}
}
end
def track_geojson
{
type: 'Feature',
geometry: RGeo::GeoJSON.encode(@track.path),
properties: {
:'color' => '#ff7800',
:'weight' => '5',
:'opacity' => '0.65'
}
}
end
索引方法
def pois_geojson
@pois.map do |poi|
{
type: 'Feature',
RGeo::GeoJSON.encode(poi.lonlat)
properties: {
name: poi.name,
:'marker-color' => '#00607d',
:'marker-symbol' => 'circle',
:'marker-size' => 'medium'
}
}
end
end
def tracks_geojson
@tracks.map do |track|
{
type: 'Feature',
geometry: RGeo::GeoJSON.encode(track.path),
properties: {
:'color' => '#ff7800',
:'weight' => '5',
:'opacity' => '0.65'
}
}
end
end
正如你所看到的,方法是类似的,但我不明白为什么索引它工作正常,而不是为了节目。
我有这个错误:
`未定义方法'+'表示#` 对于这一行: `format.json {render json:{type:'FeatureCollection',features:poi_geojson + track_geojson}}`
答案 0 :(得分:2)
哈希实例没有+
方法,要从两个哈希中形成一个数组,您可以执行以下操作:
[pois_geojson, tracks_geojson]
这适用于pois_geojson
和tracks_geojson
的原因是因为它们都已经是数组。