我正在尝试将动态创建的图表中的highcharts数据存储在数据库中,并将该数据恢复到highcharts中。为了将数据存储在数据库中,我创建了一个如下字符串:
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(getContext(),"YOU CLICKED ON "+marker.getTitle(),Toast.LENGTH_LONG).show();
return false;
}
);
}
这会创建一个像这样的字符串“[1470009600000,0],[1471219200000,0],/,[1470009600000,-1],[1471219200000,-1],/,”x值是日期。这是2系列,系列之间有“/”。 2系列每个都有2个数据点。所有数据点都有x和y值。这只是一个点数和系列数较少的例子,以使其工作。
问题在于我不知道应该如何将该字符串中的值推回到highcharts中。我知道我可以动态地将系列添加到这样的高级图表中:
var chartPoints = "";
var series = chart.series;
for( var i = 0; i < series.length; i++ ) {
var numberOfPoints = series[i].data.length; //Get number of points
for( var n = 0, length = numberOfPoints; n < length; n++ ) {
chartPoints += '[' + series[i].points[n].x + ',' + series[i].points[n].y + '],';
}
chartPoints += '/,';
}
但是我不知道如何用这样的字符串来做到这一点。我试图从字符串中创建一个具有多个维度的数组,以便通过一些循环推送值,但我无法正确使用它。这样做的最佳方式是什么?
答案 0 :(得分:2)
您是否考虑过将系列数据存储为json字符串,然后将其解析回对象并将其传递给数据参数?你可以这样做:
var sData = JSON.stringify(chart.series[0].options.data);
并将sData存储为字符串。然后加载回highcharts做:
var oData = JSON.parse(json_string_from_db);
chart.addSeries({
name: "Test",
data: oData
});
或
chart.series[0].setData(oData);
我做了一个插件:https://plnkr.co/edit/myGoss?p=preview使用setData()
设置数据,但可以在创建系列时加载数据。