echarts 画地图

1、前提条件

1)

datav地图生成器

const HuaBei = require('@/assets/json/HuaBei.json')

echarts.registerMap('HuaBei', HuaBei)
 geo: {
            map: 'HuaBei',
            nameProperty: 'NAME',
            center: [109.94227, 40.39792],
            tooltip: {
                show: false
            },
            silent: true,
            roam: true,
            z: 0,
            zoom: 1.2, // 当前视角的缩放比例
            aspectScale: 0.86,
            itemStyle: {
                normal: {
                    borderColor: 'rgba(147, 235, 248, 1)',
                    borderWidth: 1,
                    areaColor: {
                        type: 'radial',
                        x: 0.5,
                        y: 0.5,
                        r: 0.8,
                        colorStops: [
                            {
                                offset: 0,
                                color: 'rgba(147, 235, 248, 0)' // 0% 处的颜色
                            },
                            {
                                offset: 1,
                                color: 'rgba(147, 235, 248, .2)' // 100% 处的颜色
                            }
                        ],
                        globalCoord: false // 缺省为 false
                    },
                    shadowColor: 'rgba(128, 217, 248, 1)',
                    // shadowColor: 'rgba(255, 255, 255, 1)',
                    shadowOffsetX: -2,
                    shadowOffsetY: 2,
                    shadowBlur: 10
                },
                emphasis: {
                    areaColor: '#389BB7',
                    borderWidth: 0
                }
            },
            label: {
                show: false
            }
        },

2、添加地图

{
                type: 'map',
                center: [109.94227, 40.39792],
                selectedMode: false, // 此属性可防止关闭点击选择地图区域时,被选中区域显示黄色的问题。
                tooltip: { show: false },
                itemStyle: {
                    // borderColor: '#0EA9B8',
                    // borderWidth: 3,
                    // areaColor: '#248898',
                    // shadowColor: 'rgba(0, 0, 0, 0.5)',
                    // shadowBlur: 2,
                    // shadowOffsetX: 2,
                    // shadowOffsetY: 2
                    borderColor: 'rgba(147, 235, 248, 1)',
                    borderWidth: 1,
                    areaColor: {
                        type: 'radial',
                        x: 0.5,
                        y: 0.5,
                        r: 0.8,
                        colorStops: [
                            {
                                offset: 0,
                                color: 'rgba(147, 235, 248, 0.3)' // 0% 处的颜色
                            },
                            // {
                            //     offset: 0.5,
                            //     color: 'rgba(147, 235, 248, 0.5)' // 0% 处的颜色
                            // },
                            {
                                offset: 1,
                                color: 'rgba(147, 235, 248, 0.3)' // 100% 处的颜色
                            }
                        ],
                        globalCoord: false // 缺省为 false
                    },
                    emphasis: {
                        areaColor: '#389BB7',
                        borderWidth: 0
                    }
                },
                emphasis: {
                    itemStyle: {
                        // areaColor: '#0EA9B8',
                        // borderColor: '#0EA9B8',
                        // borderWidth: 3,
                        // shadowBlur: 2,
                        // shadowOffsetX: 2,
                        // shadowOffsetY: 2
                        areaColor: 'rgb(4,119,196)',
                        borderColor: '#0EA9B8',
                        borderWidth: 3
                    },
                    label: {
                        color: '#fff',
                        show: true
                    }
                },
                zoom: 1.2, // 当前视角的缩放比例
                roam: true,
                aspectScale: 0.86,
                map: 'HuaBei',
                data: [
                    {
                        name: '北京市',
                        value: 1000,
                        itemStyle: {
                            label: {
                                show: false
                            }
                        }
                    },
                    {
                        name: '天津市',
                        value: 200,
                        itemStyle: {
                            label: {
                                show: false
                            }
                        }
                    },
                    {
                        name: '蒙西',
                        value: 500,
                        itemStyle: {
                            label: {
                                show: false
                            }
                        }
                    },
                    {
                        name: '山西省',
                        value: 100,
                        itemStyle: {
                            label: {
                                show: false
                            }
                        }
                    },
                    {
                        name: '河北省',
                        value: 700,
                        itemStyle: {
                            label: {
                                show: false
                            }
                        }
                    },
                    {
                        name: '山东省',
                        value: 800,
                        itemStyle: {
                            label: {
                                show: false
                            }
                        }
                    }
                    // 其他省份数据
                ],
                // zIndex: 99999,
                // z: 99999,
                label: {
                    normal: {
                        show: false,
                        textStyle: {
                            fontSize: 16, //字体大小
                            fontWeight: 'bold',
                            color: '#fff' //字体颜色
                        }
                    }
                }
            },

3、画点

 {
                name: '电站',
                type: 'effectScatter',
                coordinateSystem: 'geo',
                symbolSize: 7, // 增大闪烁波纹的大小
                rippleEffect: {
                    scale: 4 // 设置波纹效果的放大倍数
                },
                tooltip: {
                    show: true,
                    textStyle: {
                        color: '#fff'
                    },
                    formatter: params => {
                        const lineState = {
                            0: '正常运行',
                            1: '单极运行',
                            2: '停运'
                        }
                        return (
                            '线路状态: ' +
                            lineState[params.data.lineState] +
                            '<br/>' +
                            // '线路电压进: ' +
                            // (params.data.lineVoltmeaIn == null
                            //     ? 0
                            //     : Number(params.data.lineVoltmeaIn).toFixed(
                            //           1
                            //       )) +
                            // 'kV' +
                            // '<br/>' +
                            // '线路电压出: ' +
                            // (params.data.lineVoltmeaOut == null
                            //     ? 0
                            //     : Number(params.data.lineVoltmeaOut).toFixed(
                            //           1
                            //       )) +
                            // 'kV' +
                            '线路功率方向:' +
                            (params.data.powTo ? params.data.powTo : '') +
                            '<br/>' +
                            '线路有功功率: ' +
                            (params.data.linePower == null
                                ? 0
                                : Number(params.data.linePower).toFixed(1)) +
                            'MW'
                        )
                    }
                },
                data: data.locationOfFactoryStation.map(item => {
                    return {
                        lineState: item.lineState,
                        stationName: item.stationName,
                        linePower: item.linePower,
                        value: [item.longitude, item.latitude, 250],
                        type: 'ranqi',
                        lineVoltmeaIn: item.lineVoltmeaOut,
                        lineVoltmeaOut: item.lineVoltmeaOut,
                        powTo: item.powTo,
                        lastCheckTime: '2020-01-21 10:30'
                    }
                }),
                // symbol: 'image://' + DirectCurrent,
                // symbolSize: function (val) {
                //     return val[2] / 6
                // },
                label: {
                    // normal: {
                    show: true,
                    formatter: function (params) {
                        return params.data.stationName
                        // const lineState = {
                        //     0: '正常运行',
                        //     1: '单极运行',
                        //     2: '停运'
                        // }
                        // return (
                        //     '线路状态: ' +
                        //     lineState[params.data.lineState] +
                        //     '\n' +
                        //     '线路电压进: ' +
                        //     Number(params.data.lineVoltmeaIn).toFixed(1) +
                        //     'kV' +
                        //     '\n' +
                        //     '线路电压出: ' +
                        //     Number(params.data.lineVoltmeaOut).toFixed(1) +
                        //     'kV' +
                        //     '\n' +
                        //     '线路有功功率: ' +
                        //     params.data.linePower +
                        //     'MW'
                        // )
                    },
                    position: 'bottom',
                    color: '#fff',
                    fontSize: '14',
                    fontWeight: '800',
                    // },
                    emphasis: {
                        show: false
                    }
                },
                itemStyle: {
                    normal: {
                        color: '#1D7AFF',
                        borderWidth: 2,
                        borderColor: '#1D7AFF'
                    }
                }
            },
...data.displayPowerPlantInformation.map(item => {
                const unit = {
                    1001: fire,
                    1002: water,
                    1003: pit,
                    1004: wind,
                    1005: light
                }
                return {
                    name: '发电厂',
                    type: 'effectScatter',
                    coordinateSystem: 'geo',
                    tooltip: {
                        show: true,
                        textStyle: {
                            color: '#fff'
                        },
                        formatter: params => {
                            let html = null
                            html = `电厂总出力:${
                                params.data.plantPowmea
                                    ? Number(params.data.plantPowmea).toFixed(1)
                                    : 0
                            }MW<br/>运行机组数量:${
                                params.data.unitNumbrun
                                    ? Number(params.data.unitNumbrun).toFixed()
                                    : 0
                            }台<br/>扰动机组:${
                                params.data.unitName
                            }<br/>扰动机组出力:${
                                params.data.unitPower
                                    ? params.data.unitPower
                                    : ''
                            }`
                            return html
                        }
                    },
                    symbolSize: 7, // 增大闪烁波纹的大小
                    rippleEffect: {
                        scale: 4 // 设置波纹效果的放大倍数
                    },
                    data: [
                        {
                            ...item,
                            value: [item.longitude, item.latitude, 250]
                        }
                    ],
                    // symbol: 'image://' + unit[item.unitTypeid],
                    // symbolSize: function (val) {
                    //     return val[2] / 1200
                    // },

                    label: {
                        // normal: {
                        show: true,
                        formatter: function (params) {
                            console.log(params)
                            return params.data.plantName

                            // return '总有功出力: ' + params.data.plantPowmea
                            //     ? params.data.plantPowmea
                            //     : 0 +
                            //       '\n' +
                            //       '运行机组数量: ' +
                            //       params.data.unitNumbrun
                            //     ? params.data.unitNumbrun
                            //     : 0 +
                            //       '\n' +
                            //       '扰动机组: ' +
                            //       params.data.unitName +
                            //       '\n' +
                            //       '扰动机组出力: ' +
                            //       params.data.unitPower
                            //     ? params.data.unitPower
                            //     : 0 + 'MW'
                        },
                        position: 'bottom',
                        color: '#fff',
                        fontSize: '14',
                        fontWeight: '800',
                        // },
                        emphasis: {
                            show: false
                        }
                    },
                    itemStyle: {
                        normal: {
                            color: '#42AB78',
                            shadowBlur: 10,
                            shadowColor: '#42AB78'
                        }
                    },
                    zlevel: 1
                }
            })
        ]

4、画线

{
                name: '2',
                type: 'lines',
                coordinateSystem: 'geo',
                z: 9999,
                zlevel: 2,
                effect: {
                    show: true,
                    period: 3, //箭头指向速度,值越小速度越快
                    trailLength: 0.2, //特效尾迹长度[0,1]值越大,尾迹越长重
                    symbol: 'pin', //箭头图标
                    symbolSize: 6 //图标大小
                },
                tooltip: {
                    show: false,
                    formatter: function (params) {
                        return params.name
                    }
                },
                data: data.locationOfFactoryStation.map(item => {
                    // lon 横坐标  数值越大往右
                    // lat纵坐标   数值越大往上
                    let obj = {
                        雁门关换流站: [
                            [item.longitude, item.latitude],
                            [item.longitude + 2, item.latitude - 2]
                        ],
                        锡盟换流站: [
                            [item.longitude, item.latitude],
                            [item.longitude + 2, item.latitude - 2]
                        ],
                        沂南换流站: [
                            [item.longitude, item.latitude],
                            [item.longitude + 2, item.latitude - 2]
                        ],
                        长治站: [
                            [item.longitude, item.latitude],
                            [item.longitude + 2, item.latitude - 2]
                        ],
                        广固换流站: [
                            [item.longitude, item.latitude],
                            [item.longitude - 2, item.latitude + 2]
                        ],
                        胶东换流站: [
                            [item.longitude, item.latitude],
                            [item.longitude - 2, item.latitude + 2]
                        ]
                    }
                    return {
                        coords: obj[item.stationName],
                        lineStyle: {
                            normal: {
                                type: 0,
                                color: '#02B9FF',
                                opacity: 0.7, //尾迹线条透明度
                                width: 1, //尾迹线条宽度
                                curveness: 0.2
                            }
                        }
                    }
                })
            },

5、文字

{
                //文字和标志
                name: 'light',
                type: 'scatter',
                coordinateSystem: 'geo',
                data: data.locationOfFactoryStation.map(item => {
                    // lon 横坐标  数值越大往右
                    // lat纵坐标   数值越大往上
                    let obj = {
                        雁淮直流: [
                            '江苏电网',
                            [item.longitude + 2, item.latitude - 2]
                        ],
                        锡泰直流: [
                            '江苏电网',
                            [item.longitude + 2, item.latitude - 2]
                        ],
                        银东直流: [
                            '宁夏电网',
                            [item.longitude + 2, item.latitude - 2]
                        ],
                        昭沂直流: [
                            '蒙西电网',
                            [item.longitude + 2, item.latitude - 2]
                        ],
                        鲁固直流: [
                            '蒙东电网',
                            [item.longitude - 2, item.latitude + 2]
                        ],
                        长南: [
                            '蒙东电网',
                            [item.longitude - 2, item.latitude + 2]
                        ]
                    }
                    return {
                        name: obj[item.linename][0],
                        value: obj[item.linename][1]
                    }
                }),
                symbolSize: function (val) {
                    return 0
                },
                label: {
                    normal: {
                        formatter: '至{b}',
                        position: 'bottom',
                        show: true,
                        color: '#111CE8'
                    },
                    emphasis: {
                        show: true
                    }
                }
            },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值