在我的API中从图形/ Highcharts更改为地图/ Highmaps

时间:2015-10-22 01:29:04

标签: javascript php json highcharts

我开发了一个脚本,可以在其他服务器的网站内显示在一台服务器上生成的图形(基于客户端发送的一些参数)。

看起来像这样:

    function drawGraph(selectedID, selectedCountries, selectedYears, per_capita, graphBorder, graphSource, graphDefinition, graphStyle, graphXAxis, renderToGraph, renderToDescription)
    {
        jQuery(document).ready(function() {
            var options = {};               

            jQuery.getJSON("url here", {selectedCountries: selectedCountries , selectedID: selectedID, selectedYears: selectedYears, per_capita: per_capita, graphBorder: graphBorder, graphSource: graphSource, graphDefinition: graphDefinition, graphStyle: graphStyle, graphXAxis: graphXAxis, renderToGraph: renderToGraph, type: "jsonp"})
            .done(function(data)
            {
                options.chart       = data["chart"];
                options.tooltip     = data["tooltip"];
                options.series      = data["series"];
                options.title       = data["title"];
                options.subtitle    = data["subtitle"];
                options.yAxis       = data["yAxis"];
                options.xAxis       = data["xAxis"];
                options.legend      = data["legend"];
                options.exporting   = data["exporting"];
                options.plotOptions = data["plotOptions"];
                options.credits     = data["credits"];

                var chart = new Highcharts.Chart(options);
            }

数据[“series”]包含格式为

的数据
  {"name": "Switzerland",
   "iso2": "CH",
   "data": [
    [1950, 10923],
    [1951, 20939],
    ...
    ]
   }

现在,我想提供将数据显示为地图的可能性,而不是显示图表。从我实现了这种可能性的另一个项目(但不是作为API),“系列”对象看起来像这样:

    series : [
    {
        data : data,
        mapData: Highcharts.maps['custom/world'],
        joinBy: ['iso-a2', 'iso-2']
    }]

现在,显然,“数据”对象必须看起来不同 - 不是一个多年的国家,而是一个多年的国家。我必须指出,不是图形而是地图。另外,我需要正确的Javascript / JSON文件。

但是我现在如何解析系列参数?像这样的东西?

    options.series  = {data: data["series"], mapData: Highcharts.maps['custom/world'], joinBy: ['iso-a2', 'iso-2']};                    

我应该在“交付方”(生成数据的PHP代码)或客户端上执行此操作吗?

感谢任何提示。希望我能清楚地知道自己想要达到的目标。

1 个答案:

答案 0 :(得分:0)

如果您只想创建一个地图(总是相同的形状),那么您可以在JS中设置选项,如下所示:

z-index: -1;

现在,您的API根本不会改变:

var options = {
    plotOptions: {
        series: {
            mapData: Highcharts.maps['custom/world'],
            joinBy: ['iso-a2', 'iso-2']
        }
    }
};