Cannot read property 'concat' of undefined

var myChart = echarts.init(document.getElementById('main'));

var geoCoordMap = {

'上海': [121.4648,31.2891],
'东莞': [113.8953,22.901],
'东营': [118.7073,37.5513],
'中山': [113.4229,22.478],
'临汾': [111.4783,36.1615],
'临沂': [118.3118,35.2936],
'丹东': [124.541,40.4242],
'丽水': [119.5642,28.1854],
'乌鲁木齐': [87.9236,43.5883],
'佛山': [112.8955,23.1097],

};

var BJData = [
[{name:'成都'},{name:'潍坊',value:5}],
[{name:'潍坊'},{name:'西宁',value:5}],
[{name:'西宁'},{name:'温州',value:5}],
[{name:'温州'},{name:'东莞',value:5}],
[{name:'东莞'},{name:'汕头',value:5}],
[{name:'汕头'},{name:'福州',value:5}],
[{name:'廊坊'},{name:'廊坊',value:5}]
];

var planePath = 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z';

var convertData = function (data) {

var res = [];
for (var i = 0; i < data.length; i++) {
    var dataItem = data[i];
    var fromCoord = geoCoordMap[dataItem[0].name];
    var toCoord = geoCoordMap[dataItem[1].name];
    if (fromCoord && toCoord) {
        res.push({
            fromName: dataItem[0].name,
            toName: dataItem[1].name,
            coords: [fromCoord, toCoord]
        });
    }
}
return res;

};

var color = ['#a6c84c', '#ffa022', '#46bee9'];
var series = [];
[['北京', BJData]].forEach(function (item, i) {

series.push({
        name: item[0] + ' Top10',
        type: 'lines',
        coordinateSystem: 'bmap',//百度地图
        // coordinateSystem: 'geo',// echarts3的地图
        zlevel: 1,
        effect: {
            show: true,
            period: 6,
            trailLength: 0.7,
            color: '#fff',
            symbolSize: 3
        },
        lineStyle: {
            normal: {
                color: color[i],
                width: 0,
                curveness: 0.2
            }
        },
        data: convertData(item[1])
    },
    {
        name: item[0] + ' Top10',
        type: 'lines',
        coordinateSystem: 'bmap', //百度地图
        // coordinateSystem: 'geo', // echarts3的地图
        zlevel: 2,
        effect: {
            show: true,
            period: 6,
            trailLength: 0,
            symbol: planePath,
            symbolSize: 15
        },
        lineStyle: {
            normal: {
                color: color[i],
                width: 1,
                opacity: 0.4,
                curveness: 0.2
            }
        },
        data: convertData(item[1])
    },
    {
        name: item[0] + ' Top10',
        type: 'effectScatter',
        coordinateSystem: 'bmap',//百度地图
        // coordinateSystem: 'geo',// echarts3的地图
        zlevel: 2,
        rippleEffect: {
            brushType: 'stroke'
        },
        label: {
            normal: {
                show: true,
                position: 'right',
                formatter: '{b}'
            }
        },
        symbolSize: function (val) {
            return val[2] / 8;
        },
        itemStyle: {
            normal: {
                color: color[i]
            }
        },
        data: item[1].map(function (dataItem) {
            return {
                name: dataItem[1].name,
                value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
            };
        })
    });

});

option = {

backgroundColor: '#404a59',
title : {
    text: '模拟迁徙',
    subtext: '数据纯属虚构',
    left: 'center',
    textStyle : {
        color: '#fff'
    }
},
tooltip : {
    trigger: 'item'
},
legend: {
    orient: 'vertical',
    top: 'bottom',
    left: 'right',
    data:['北京 Top10', '上海 Top10', '广州 Top10'],
    textStyle: {
        color: '#fff'
    },
    selectedMode: 'single'
},
dataRange: {
    min: 0,
    max: 100,
    x: 'right',
    calculable: true,
    color: ['#ff3333', 'red'],
    textStyle: {
        color: '#fff'
    }
},
bmap: {
    center: [115.97, 29.71],
    zoom: 5,
    roam: true
},
//  geo: {
//     map: 'world',
//     label: {
//         emphasis: {
//             show: false
//         }
//     },
//     roam: true,
//     itemStyle: {
//         normal: {
//             areaColor: '#323c48',
//             borderColor: '#404a59'
//         },
//         emphasis: {
//             areaColor: '#2a333d'
//         }
//     }
// },
series: series

};

myChart.setOption(option);

可是在这一行报错,我看了官网的是这样写的没有错啊,不知道我这里错了哪里..................

clipboard.png

阅读 6.1k
2 个回答

输出下geoCoordMap[dataItem[1].name]的值,应该是undefined
你的第一个潍坊geoCoordMap就没有

抛出的错误意思是geoCoordMap[dataItem[1].name]没有concat这个方法。

一般来讲,可能的原因是你map中的某一个geoCoordMap[dataItem[1].name]undefined...。

在你map的函数中,return之前,console.log(dataItem[1].name, geoCoordMap[dataItem[1].name])就知道是哪个数据出问题了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题