在我的群集表中有群集坐标列名称描述, 我直接存储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}]}
我需要绘制多个多边形
但我正在尝试使用
控制器代码
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);
答案 0 :(得分:0)
我建议为点数加载ajax。然后,您可以使用JSON-Output呈现操作。它可能是:
render json: @result
其他解决方案:当您在视图中使用googlemaps代码时,可以将db中的json-string分配给javascript-variable:
var json_string = '<%= @results.raw %>';