如何在JSON Not Labeled'value'中使用Highmaps数据

问题描述 投票:0回答:1

我有一个包含许多字段的数据集。我无法控制这个JSON的创建。样品:

data = [
    {
    'maparea':'3704000063',
    'relatedsource':null,
    'empcount':'198390',
    'response':'78',
    'mean':'61663.00',
    },
...
]

图表代码是:

Highcharts.mapChart('container', {
    chart: {
        map: geojson
    },

    title: {
        text: 'GeoJSON in Highmaps'
    },

    mapNavigation: {
        enabled: true,
        buttonOptions: {
            verticalAlign: 'bottom'
        }
    },

    colorAxis: {
        tickPixelInterval: 100
    },

    series: [{
        data: data,
        keys: ['maparea', 'relatedsource', 'empcount', 'response', 'mean'],
        joinBy: ['fips', 'maparea'],
        name: 'Random data',
        states: {
            hover: {
                color: '#a4edba'
            }
        },
        dataLabels: {
            enabled: true,
            format: '{point.properties.postal}'
        }
    }]
});

geoJSON使用fips标记区域(在本例中为NC中的县)。地图显示州和县的要素。但是,没有数据用于绘图。这是因为HighMaps代码期望在我认为的数据中存在value元素。

有没有办法告诉HighMaps数据集中的哪些元素用于遮蔽等值线?

javascript highcharts
1个回答
1
投票

我没有看到将您的唯一数据形状映射到expected keys in the data according to the docs的任何选项。根据您的评论,这可以通过数组实现,但对于对象来说似乎不可能。

但是,将对象重新映射到所需的形状非常简单。下面的代码给出了一个部分示例。

let dataMapped = data.map(obj => { 
   var median = Number(obj.median);       
   return Object.assign(obj, { name: obj.maparea, value: median });
});

然后使用dataMapped作为数据的值。

可能有更优雅的方式在ES6中使用对象扩展来执行此操作,并避免使用Object.assign将旧对象与新属性合并,但我目前没有时间研究它。

© www.soinside.com 2019 - 2024. All rights reserved.