Echarts实现——中国地图

13 篇文章 0 订阅
3 篇文章 0 订阅

Echarts实现——中国地图
如下图:
根据省份的数据来实现对不同省份的颜色高亮,以及点击对应的省钻取到市
使用Echarts进行地图绘制展示的时候,需要china.json;
举例在vue的项目中可以通过cnpm install echarts --save安装Echarts依赖;
引入:import china from ‘echarts/map/json/china.json’;
剩下的不多说了,直接上代码:

<template>
    <div class="leftCard">
        <div id="chinaMap" ref="chinaMap"></div>
    </div>
</template>

<script>
import china from 'echarts/map/json/china.json'
export default {
    name:'leftCard',
    data(){
        return{
            myChart:null,
            dataList: [
                { name: "南海诸岛",  value: 100,  eventTotal:100,  specialImportant:10,  import:10,  compare:10, common:40,  specail:20 },
                { name: "北京", value: 540 },
                { name: "天津", value: 130 },
                { name: "上海", value: 400},
                { name: "重庆",  value: 750},
                { name: "河北", value: 130},
                { name: "河南", value: 830},
                { name: "云南", value: 110 },
                { name: "辽宁",  value: 19 },
                { name: "黑龙江",  value: 150},
                { name: "湖南", value: 690 },
                { name: "安徽", value: 60 },
                { name: "山东", value: 39 },
                { name: "新疆", value: 452 },
                { name: "江苏", value: 31 },
                { name: "浙江", value: 104 },
                { name: "江西", value: 36 },
                { name: "湖北", value: 52},
                { name: "广西", value: 33 },
                { name: "甘肃", value: 73 },
                { name: "山西", value: 54 },
                { name: "内蒙古", value: 778},
                { name: "陕西", value: 22},
                { name: "吉林",value: 44 },
                { name: "福建",value: 18},
                { name: "贵州", value: 54},
                { name: "广东", value: 98},
                { name: "青海",value: 13},
                { name: "西藏", value: 0},
                { name: "四川", value: 44},
                { name: "宁夏", value: 42},
                { name: "海南", value: 22 },
                { name: "台湾", value: 23},
                { name: "香港",value: 25},
                { name: "澳门",value: 555}
            ]
        }
    },
    created(){},
    mounted(){
        this.$nextTick(() =>{
            this.initEchartMap();
        })
    },
    methods:{
        // 初始化地图
        initEchartMap(){
            this.$ECharts.registerMap('china', china) //这个特别重要
            this.myChart = this.$ECharts.init(this.$refs.chinaMap, null, {renderer:'svg'});
            this.myChart.off('click');
            //echart 配制option  
            var options= {
                    tooltip: {
                        triggerOn: "mousemove",   //mousemove、click
                        padding:8,
                        borderWidth:1,
                        borderColor:'#409eff',
                        backgroundColor:'rgba(255,255,255,0.7)',
                        textStyle:{
                            color:'#000000',
                            fontSize:13
                        },
                        formatter: function(e, t, n) {
                            let data = e.data;
                            let context = `
                            <div>
                                <p><b style="font-size:15px;">${data.name}</b>(2020年第一季度)</p>
                                <p class="tooltip_style"><span class="tooltip_left">成果总数</span><span class="tooltip_right">${data.value}</span></p>
                            </div>
                            `
                            return context;
                        }
                    },
                    visualMap: {
                        show:true,
                        left: 26,
                        bottom: 40,
                        showLabel:true,
                        pieces: [
                            {
                                gte: 1000,
                                label: ">= 1000",
                                color: "#5475f5"
                            },
                            {
                                gte: 700,
                                lt: 999,
                                label: "700 - 999",
                                color: "#e6ac53"
                            },
                            {
                                gte: 500,
                                lt: 699,
                                label: "500 - 699",
                                color: "#9feaa5"
                            },
                            {
                                gte: 100,
                                lt:499,
                                label: "100 - 499",
                                color: "#85daef"
                            },
                            {
                                gte: 10,
                                lt: 99,
                                label: "10 - 99",
                                color: "#74e2ca"
                            },
                            {
                                lt:10,
                                label:'<10',
                                color: "#9fb5ea"
                            }
                        ]
                    },
                    geo: {
                        map: "china",
                        scaleLimit: {
                            min: 1,
                            max: 2
                        },
                        zoom: 1,
                        top: 120,
                        layoutSize: "100%", //保持地图宽高比
                        label: {
                            normal: {
                                show:true,
                                fontSize: "14",
                                color: "rgba(0,0,0,0.7)"
                            },
                            emphasis: {
								show: false,
								textStyle: {
									color: "#F3F3F3"
								}
							}
                        },
                        itemStyle: {
                            normal: {
                                //shadowBlur: 50,
                                //shadowColor: 'rgba(0, 0, 0, 0.2)',
                                borderColor: "rgba(0, 0, 0, 0.2)",
                                areaColor: '#1955a4',
                            },
                            emphasis: {
                                areaColor: "#f2d5ad",
                                shadowOffsetX: 0,
                                shadowOffsetY: 0,
                                borderWidth: 0
                            }
                        }
                    },
                    series: [
                        {
                            name: "成果预览",
                            type: "map",
                            geoIndex: 0,
                            data: this.dataList
                        }
                    ]
            }
            this.myChart.clear();
            this.myChart.setOption(options);
            this.myChart.resize();
            //地图的点击事件 ,钻取到市我就不举例了,类似的方法,点击事件可以获取到当前点击的省份的数		   据;
            this.myChart.on('click', function(params) {
                console.log(params)
            })
        }
    }
}
</script>

<style lang="less" scoped>
.leftCard{
    width: 100%;
    height: 100%;
    #chinaMap{
        width: 100%;
        height: 100vh;
    }
}
</style>

避坑:china.js 需要要进行引入;安装echarts中在5.0的版本以下的就可以获取到china.json文件(会出现地图不展示的bug问题);
然后调用这个方法   this.$ECharts.registerMap('china', china);
以上为个人在vue项目中的开发实战,欢迎大家来借鉴;记得收藏加关注哦;
  • 22
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要在Angular中使用ECharts实现河南省地图,您可以按照以下步骤进行操作: 1. 首先,在您的Angular项目中安装ECharts。您可以使用以下命令来安装: ``` npm install echarts ``` 2. 创建一个新的组件,例如"MapComponent",并在该组件的HTML模板中添加一个容器元素,用于显示地图。例如: ```html <div id="mapContainer" style="width: 800px; height: 600px;"></div> ``` 3. 在MapComponent组件的TypeScript文件中,导入ECharts相关模块: ```typescript import * as echarts from 'echarts'; ``` 4. 在组件的ngOnInit方法中,使用ECharts的API来创建地图。您可以参考以下示例代码: ```typescript ngOnInit() { const chart = echarts.init(document.getElementById('mapContainer')); // 异步加载地图数据 echarts.registerMap('henan', require('@assets/json/henan.json')); const option = { title: { text: '河南省地图', left: 'center', }, tooltip: { trigger: 'item', }, // 其他配置项... series: [ { name: '河南省', type: 'map', map: 'henan', // 使用刚刚注册的地图名 // 其他系列配置... }, ], }; chart.setOption(option); } ``` 请注意,上述示例代码中的地图数据是通过异步加载的方式进行注册,您需要准备一个名为"henan.json"的地图数据文件,并将其放置在您的Angular应用的assets目录中。您可以从ECharts官方网站或其他资源获取到相应的地图数据文件。 5. 在您的Angular应用中使用MapComponent组件,以显示地图。您可以将MapComponent添加到其他组件的模板中,或者使用路由来导航到MapComponent。 通过以上步骤,您就可以在Angular应用中使用ECharts实现河南省地图了。希望对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值