0

我有一个包含多列的 JSON 文件,并且希望根据用户的选择将其中任何一个显示为相对开放的地图。现在,除了“值”之外,我看不到任何使用其他列名在 Highmaps 中显示的示例。是这样吗?或者有没有办法在Javascript代码中命名Highmaps应该使用的列来显示数据?

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

LC_Ctry_Limit,LC_Capita_Limit,LC_Ctry_Footprint,LC_Capita_Footprint,LC_Score

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

LC_Ctry_Limit,LC_Capita_Limit,LC_Ctry_Footprint,LC_Capita_Footprint,value

但是,如果用户想要显示另一列,那又如何呢?我是否需要为每一列创建五个不同的 JSON 文件,然后将其命名为“值”?这对我来说似乎相当不灵活。

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

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

感谢您的任何提示!

4

1 回答 1

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() 以进行动态数据更改。

于 2015-09-03T14:38:29.250 回答