动态填充的highcharts数据和数据库存储

时间:2016-08-02 12:32:51

标签: javascript highcharts

我正在尝试将动态创建的图表中的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 += '/,';
}

但是我不知道如何用这样的字符串来做到这一点。我试图从字符串中创建一个具有多个维度的数组,以便通过一些循环推送值,但我无法正确使用它。这样做的最佳方式是什么?

1 个答案:

答案 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()设置数据,但可以在创建系列时加载数据。