可以使用另一个列名而不是" value"在Highmaps中使用?

时间:2015-09-02 09:22:25

标签: javascript highcharts highmaps field-names

我有一个包含多列的JSON文件,并希望根据用户的选择将这些列的显示保持为相对开放的地图。现在,我看不到使用其他列名在Highmaps中显示的任何示例而不是" value"。是这样吗?或者有没有办法在Javascript代码中为Highmaps用于显示数据的列命名?

也就是说,列名是(例如)这些:

LC_Ctry_Limit,LC_Capita_Limit,LC_Ctry_Footprint,LC_Capita_Footprint,LC_Score

现在,为了能够显示来自LC_Score的数据,我需要将列(硬编码到JSON文件中)重命名为" value"。因此:

LC_Ctry_Limit,LC_Capita_Limit,LC_Ctry_Footprint,LC_Capita_Footprint,value

但是,如果用户想要显示另一列,那该怎么办?我是否需要为每列创建五个不同的JSON文件,并将其命名为" value"然后?这对我来说似乎相当不灵活。

我的Highmaps代码看起来像这样,基于首先加载GeoJSON然后加载JSON文件,我想在那里,它应该是关于列名称说明符的东西:

    series : [
    {
        data : data,
        mapData: geojson,
        joinBy: ['Country_40','Country'],
        name: 'LC_Score',
        borderWidth: 0.2,
        COLUMN-TO-BE-USED: lorem
    }]

感谢任何提示!

1 个答案:

答案 0 :(得分:1)

您可以在图表的选项/配置中设置数据之前设置value属性的值。此选择可以基于传递给函数的值,该函数将返回准备好的数组以进行配置。

示例:http://jsfiddle.net/bmv0y8dn/

    var columnToBeUsed = 'lorem';
    $('#container').highcharts('Map', {
        series: [{
            data: (function (columnToBeUsed) {
                var len = data.length,
                    tab = [];
                for (var i = 0; i < len; i++) {
                    data[i].value = data[i][columnToBeUsed];
                }
                return data;
            })(columnToBeUsed),
            ...

系列数据可以使用Series.setData动态更改,因此您可以更改value的值,并使用新数据调用setData()以进行动态数据更改。