vue3--echart 绘制中国地图

引入 import Map from './map.vue'
调用 <Map />
//创建组件

<template>
    <div>
         <div id="chinaMap"  style="height: 530px;"></div>
    </div>
</template>
<script lang="ts">
    import * as echarts from 'echarts'
    import chinaJSON from './china.json'  // 就是地图数据,可以直接在网上直接下载 
    import {defineComponent,onMounted,ref} from 'vue';
    export default defineComponent({
        setup(props,{emit}){
            onMounted(()=>{
                // 当界面挂载出来后就会自动执行
                drawChina();
            })
            let regions:any = []
            let scatter = [
                {name:'上海',value:[121.472644, 31.231706,9],name1:'公司数:',val1:'230',name2:'雇员数',val2:'500',name3:'累计发送',val3:'636'},
                {name:'安徽',value:[117.283042, 31.86119],name1:'公司数:',val1:'320',name2:'雇员数',val2:'530',name3:'累计发送',val3:'636'},
                {name:'澳门',value:[113.54909, 22.198951],name1:'公司数:',val1:'340',name2:'雇员数',val2:'540',name3:'累计发送',val3:'626'},
            ]
            const drawChina = ()=>{
                var myChart = echarts.init(document.getElementById('chinaMap'));
                echarts.registerMap('china', chinaJSON) //注册可用的地图
                document.getElementById("chinaMap").removeAttribute('_echarts_instance_');
                var optionObj = {
                    geo: {
                    map: 'china',
                    roam: true, //是否允许缩放,拖拽
                    zoom: 1.5, //初始化大小
                    //缩放大小限制
                    scaleLimit: {
                        min: 2, //最小
                        max: 2, //最大
                    },
                    //设置中心点
                    center: [103.823557, 36.058039],
                    //省份地图添加背景
                    regions: regions,
                    itemStyle: {
                    areaColor: '#478ec1',
                    color: '#ffffff',
                    borderColor: '#aeafa8',
                    borderWidth: 1,
                    },
                    //高亮状态
                    emphasis: {
                        itemStyle: {
                            areaColor: '#40adff',
                            color: '#ffffff',
                        },
                    },
                    },
                    tooltip:{
                        triggerOn:'click',
                        formatter:'{a}',
                        show:false,
                    },
                    //配置属性
                    series: {
                        type: 'effectScatter',
                        coordinateSystem: 'geo',
                        data: scatter, 
                        showEffectOn: 'render',
                        rippleEffect: {
                            //涟漪特效相关配置
                            brushType: 'stroke', //波纹的绘制方式,可选 'stroke' 和 'fill'
                        },
                    hoverAnimation: true, //是否开启鼠标 hover 的提示动画效果
                    label: {
                    //图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等,
                        normal: {
                            formatter: '{b}',
                            position: 'right',
                            show: true,
                        },
                    },
                    itemStyle: {
                    //图形样式,normal 是图形在默认状态下的样式;emphasis 是图形在高亮状态下的样式,比如在鼠标悬浮或者图例联动高亮时
                        normal: {
                            color: '#ffffff', //散点的颜色
                            shadowBlur: 5,
                            shadowColor: 10,
                            fontSize: '10px',
                        },
                    },
                        zlevel: 1,
                    },
                }
                setTimeout(()=>{
                    myChart.setOption(optionObj);
                },10)

                myChart.on('click', function (params:any) {
                    doing some thing
                });
            }
            return{
                drawChina,
            }
        }
    })
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。