如何将json数据从控制器传递给javascript

时间:2015-07-10 07:40:49

标签: javascript ruby-on-rails json google-maps

在我的群集表中有群集坐标列名称描述, 我直接存储Json格式的坐标,如下面是我的簇表,使用这些坐标我想绘制多个簇(多边形) 在谷歌地图,

    id |       description                                                                                                                                                                                                
----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1 | {"points":[{"lat":14.232437996569354,"lng":76.409912109375},{"lat":13.336175186494927,"lng":77.1185302734375},{"lat":12.961735843534294,"lng":77.596435546875},{"lat":12.511665400971031,"lng":76.904296875}]}


 2   |    {"points":[{"lat":14.232437996569354,"lng":76.409912109375},  {"lat":13.336175186494927,"lng":77.1185302734375},{"lat":12.961735843534294,"lng":77.596435546875},{"lat":12.511665400971031,"lng":76.904296875}]}

我需要绘制多个多边形
但我正在尝试使用

将此json导入rails控制器

控制器代码

query="select id,description  from clusters;
@result=ActiveRecord::Base.connection.execute(query);

我面临的问题是如何将此@result传递给javascript 在谷歌地图中绘制多个多边形。 如果将这个json复制到js中的一个变量我能够绘制集群但是我面临的问题是如何将这个json数据从控制器中的数据库读取传递到rails中的javascript

我的谷歌地图代码在javascript中如果硬代码json成为一个变量它正在工作但我需要从数据库中获取这个json如何将json与id从控制器传递给javascript

var obj=i need json to store here //this how to fetch json from controller to js  
polygons = [];
for(var i = 0; i < obj.length; ++i){
   //do something with obj[i]
   for(var ind in obj[i]) {
        console.log(ind);
          var arr = new google.maps.MVCArray();
        for(var vals in obj[i][ind]){
            console.log(vals, obj[i][ind][vals].lat );
                 arr.push( new google.maps.LatLng( obj[i][ind][vals].lat, obj[i][ind][vals].lng ) );
        }
   }

polygons.push(arr);
}       

    polygons.forEach( function(polyPath) {

        var polygon = new google.maps.Polygon({
            paths: polyPath,
            strokeColor: '#FF0000',
            strokeOpacity: 0.8,
            strokeWeight: 2,
            fillColor: '#FF0000',
            fillOpacity: 0.35,
            map: map
        });
    });
}

google.maps.event.addDomListener(window, 'load', initialize);

1 个答案:

答案 0 :(得分:0)

我建议为点数加载ajax。然后,您可以使用JSON-Output呈现操作。它可能是:

render json: @result

其他解决方案:当您在视图中使用googlemaps代码时,可以将db中的json-string分配给javascript-variable:

var json_string = '<%= @results.raw %>';