3dmap

描述:当前是关于Echarts图表中的 3D柱图 示例。
 
            let data = [{
        name: "北京",
        value: [116.24, 39.55, 1],

    },
    {
        name: "深圳",
        value: [114.271522, 22.753644,1]
    },

    {
        name: "重庆",
        value: [106.54, 29.59,1]
    },
    {
        name: "南京",
        value: [118.802891, 32.064735,1]
    },

]


let LableData = [{
        name: "北京",
        value: [114.24, 35.55,5],
        lable: [10, 1]
    },
    /* {
         name: "深圳",
         value: [116.271522, 20.753644],
         lable: [10, 1]
     },*/
    {
        name: "重庆",
        value: [108.54, 24.59,5],
        lable: [10, 1]
    },
    {
        name: "南京",
        value: [114.78, 26.04,5],
        lable: [10, 1]
    },
];
let dataMap = [{
        name: '安徽',
        value: 1
    },
    {
        name: '重庆',
        value: 1
    },
    {
        name: '广东',
        value: 1
    },
    {
        name: '北京',
        value: 1,


    },
    {
        name: '新疆',
        value: 1
    },
    {
        name: '西藏',
        value: 1
    },
    {
        name: '青海',
        value: 1
    },
    {
        name: '甘肃',
        value: 1
    },
    {
        name: '内蒙古',
        value: 1
    },
    {
        name: '黑龙江',
        value: 1
    },
    {
        name: '宁夏',
        value: 1
    },
    {
        name: '四川',
        value: 1
    },
    {
        name: '云南',
        value: 1
    },
    {
        name: '广西',
        value: 1
    },

    {
        name: '湖南',
        value: 1
    },
    {
        name: '贵州',
        value: 1
    },

    {
        name: '陕西',
        value: 1
    },
    {
        name: '湖北',
        value: 1
    },
    {
        name: '河南',
        value: 1
    },
    {
        name: '山西',
        value: 1
    },
    {
        name: '河北',
        value: 1
    },
    {
        name: '山东',
        value: 1
    },
    {
        name: '江西',
        value: 1
    },
    {
        name: '福建',
        value: 1
    },
    {
        name: '香港',
        value: 1
    },
    {
        name: '台湾',
        value: 1
    },

    {
        name: '浙江',
        value: 1
    },

    {
        name: '江苏',
        value: 1
    },
    {
        name: '天津',
        value: 1
    },
    {
        name: '辽宁',
        value: 1
    },
    {
        name: '吉林',
        value: 1
    },
    {
        name: '上海',
        value: 1
    },
    {
        name: '海南',
        value: 1
    },
    {
        name: '南海诸岛',
        value: 1
    },
]

/*for (var i = 0; i < dataMap.length; i++) {
    dataMap[i].height = 20
}
*/

option = {
    geo3D: {
        map: 'china',
        show: true,
        zlevel: -10,
        boxWidth: 200,
        boxHeight:30,//4:没有bar. 30:有bar,bar最高度30,按比例分配高度
        regionHeight:3,
        shading: 'lambert',
        label: { // 标签的相关设置
            show: false,
        },

        itemStyle: {
            areaColor: '#0c294d',
            opacity: 1,
            borderWidth: 0.5,
            borderColor: '#1cccff'
        },
        emphasis: {
            label: {
                show: true,

                textStyle: {
                    color: '#fff',
                    fontSize: 14,
                    backgroundColor: 'transparent' // 字体背景色
                }
            },
             borderColor:'#333',
                borderWidth:5,
            itemStyle: {
                areaColor: '#fff',
               
            }
        },
        light: {
            main: {

                shadow: true,
                shadowQuality: 'ultra',
            },

        },
        regions: [{
                name: '广东',
                height: 3,
                itemStyle: {
                    // areaColor: '#fff',

                },
                emphasis: {

                },
            },
            {
                name: '北京',
                height: 3,
                itemStyle: {

                }
            },
            {
                name: '江苏',
                height: 3,
                itemStyle: {

                }
            },
            {
                name: '重庆',
                height: 3,
                itemStyle: {

                }
            },
        ],


        viewControl: {
            projection: 'perspective',
            autoRotate: false,
            damping: 0,
            rotateSensitivity: 2,//旋转操作的灵敏度
            rotateMouseButton: 'left', //旋转操作使用的鼠标按键
            zoomSensitivity:2, //缩放操作的灵敏度
            panSensitivity:2, //平移操作的灵敏度
            panMouseButton: 'right', //平移操作使用的鼠标按键
            
            distance: 150, //默认视角距离主体的距离
           center:[0,0,0],
           
            animation: true,
            animationDurationUpdate: 1000,
            animationEasingUpdate: 'cubicInOut'
        },


    },
    
    series: [
        // 区域散点图
        {
            type: 'scatter3D',
            coordinateSystem: 'geo3D',
            zlevel: 3,
            symbol: 'circle',
            symbolSize: 10,
            rippleEffect: { //坐标点动画
                period: 3,
                scale: 5,
                brushType: 'fill'
            },
            label: {
                normal: {
                    show: true,
                    position: 'right',
                    formatter: '{b}',
                    
                    textStyle: {
                        color: '#fff',
                        // borderWidth: 1,
                        // borderColor: 'red',
                        fontWeight: "bold",
                        fontSize: 16,
                        backgroundColor: 'transparent' // 字体背景色
                    },

                }
            },

            data: data,
            itemStyle: { //坐标点颜色
                normal: {
                    show: true,
                    color: '#c0e6f2',
                    shadowBlur: 20,
                    shadowColor: '#fff'
                },
                emphasis: {
                    areaColor: '#f00'
                }
            },

        },
        //lable
        { 
            name: 'lable',
            type: 'scatter3D',
            coordinateSystem: 'geo3D',
            symbol: 'pin',
            symbolSize: [50, 20],
            hoverAnimation: true,
            zlevel: 2,
            label: {
                normal: {
                    show: true,
                    textStyle: {
                        color: "#fff8a8",
                        fontSize: 14,
                        fontWeight: 'bold',
                        lineHeight: 15,
                        backgroundColor: 'transparent' // 字体背景色

                    },
                    formatter: function(params) {

                        return params.data.lable[0] + "G" + '/' + params.data.lable[1] + "G"
                    }
                }
            },

            itemStyle: {
                normal: {
                    color: 'transparent', //标志颜色
                    opacity: 1,

                }
            },
            showEffectOn: 'render',
            rippleEffect: {
                brushType: 'stroke'
            },
            data: LableData,


        },
        // 线 和 点
        {
            type: 'lines3D',
            coordinateSystem: 'geo3D',
            zlevel: 1, //设置这个才会有轨迹线的小尾巴
            polyline: false,
            effect: {
                show: true,
                period: 10,
                trailLength: 0.1,
                trailColor: 'red',
                color: '#fff', //流动点颜色
                symbol: 'arrow',
                symbolSize: 6
            },
            lineStyle: {
                normal: {
                    color: '#e4ff00', //线条颜色
                    width: 2,
                    curveness: 0.5,
                    shadowColor: '#fff',
                }
            },
            blendMode: 'lighter',
            data: [{

                    fromName: "深圳",
                    toName: "北京",
                    coords: [
                        [114.271522, 22.753644,1],
                        [116.24, 39.55, 1],



                    ]
                },
                {

                    fromName: "深圳",
                    toName: "南京",
                    coords: [
                        [114.271522, 22.753644,1],
                        [118.802891, 32.064735, 1],


                    ]
                },
                {
                    fromName: "深圳",
                    toName: "重庆",
                    coords: [
                        [114.271522, 22.753644, 1],
                        [106.54, 29.59,1],

                    ]
                }
            ],

        },
        //bar
        {
            type: 'bar3D',
            coordinateSystem: 'geo3D',
            zlevel: 3,
            barSize: 3, //柱子粗细
            shading: 'lambert',
            itemStyle: {
                color: '#67ebc0'
            },
            label: {
                show: true,
                position: 'top',
                textStyle: {
                    color: '#fff',
                    backgroundColor: 'transparent'
                },
                formatter: function(params) {

                    return params.value[2]
                }

            },
            data: [
                {
                    name: '数据1',
                    value: [118.802891, 32.064735, 200]
                },
                {
                    name: '数据2',
                    value: [106.54, 29.59, 80]
                },
                {
                    name: '数据3',
                    value: [116.24, 39.55, 500]
                }
            ]
        }
    ]
};
myChart.on('mouseover', function(params) {
    let option = myChart.getOption();
    if (params.name == '深圳') {
        if (option.geo3D[0].regions[0].height !== 5) {
            option.geo3D[0].regions[0].height = 5;
            option.geo3D[0].regions[0].itemStyle.areaColor = '#fff';
            myChart.setOption(option)
        }

    } else if (params.name == '北京') {
        if (option.geo3D[0].regions[1].height !== 5) {
            option.geo3D[0].regions[1].height = 5;
            option.geo3D[0].regions[1].itemStyle.areaColor = '#fff';
            myChart.setOption(option)
        }

    } else if (params.name == '南京') {
        if (option.geo3D[0].regions[2].height !== 5) {
            option.geo3D[0].regions[2].height = 5;
            option.geo3D[0].regions[2].itemStyle.areaColor = '#fff';
            myChart.setOption(option)
        }

    } else if (params.name == '重庆') {
        if (option.geo3D[0].regions[3].height !== 5) {
            option.geo3D[0].regions[3].height = 5;
            option.geo3D[0].regions[3].itemStyle.areaColor = '#fff';
            myChart.setOption(option)
        }

    } else {

        if (option.geo3D[0].regions[0].height == 5) {
            option.geo3D[0].regions[0].height = 3;
            option.geo3D[0].regions[0].itemStyle = {}
            myChart.setOption(option)
        } else if (option.geo3D[0].regions[1].height == 5) {
            option.geo3D[0].regions[1].height = 3;
            option.geo3D[0].regions[1].itemStyle = {}
            myChart.setOption(option)
        } else if (option.geo3D[0].regions[2].height == 5) {
            option.geo3D[0].regions[2].height = 3;
            option.geo3D[0].regions[2].itemStyle = {}
            myChart.setOption(option)
        } else if (option.geo3D[0].regions[3].height == 5) {
            option.geo3D[0].regions[3].height = 3;
            option.geo3D[0].regions[3].itemStyle = {}
            myChart.setOption(option)
        }
    }
})




/*myChart.on('mouseover', function(params) {
    let option = myChart.getOption();
    if (params.name == '北京') {
        option.series[0].data[3].height = 10;
        option.series[0].data[3].value = 2;

        // option.series[0].data[3].itemStyle.color = '#ddb314'
        myChart.setOption(option)


    } else if (params.name == '安徽') {
        option.series[0].data[0].height = 10;
        option.series[0].data[0].value = 2;
        myChart.setOption(option)


    } else if (params.name == '重庆') {
        // console.log(params.name)
        option.series[0].data[1].height = 10;
        option.series[0].data[1].value = 2;
        myChart.setOption(option)


    } else if (params.name == '广东') {
        option.series[0].data[2].height = 10;
        option.series[0].data[2].value = 2;
        myChart.setOption(option)

    } else {
        if (option.series[0].data[3].height == 10) {
            option.series[0].data[3].height = 5;
            option.series[0].data[3].value = 1;
            myChart.setOption(option)
        } else if (option.series[0].data[0].height == 10) {
            option.series[0].data[0].height = 5;
            option.series[0].data[0].value = 1;
            myChart.setOption(option)
        } else if (option.series[0].data[1].height == 10) {
            option.series[0].data[1].height = 5;
            option.series[0].data[1].value = 1;
            myChart.setOption(option)
        } else if (option.series[0].data[2].height == 10) {
            option.series[0].data[2].height = 5;
            option.series[0].data[2].value = 1;
            myChart.setOption(option)
        }


    }
    
});*/


/*
myChart.on('click', function(params) {
    let option = myChart.getOption(); //option.series[0].data.length
    if (params.name == '广东') {
        // console.log()   option.visualMap[0].inRange.color[0] = 'rgba(136,133,133 ,0.5)';


        for (var i = 0; i < option.series[0].data.length; i++) {
            if (option.series[0].data[i].name !== '广东') {
                option.series[0].data[i].value = 3;
                console.log(option.series[0].data[i].value)
                myChart.setOption(option)
            }
        }
    }
});*/