vue echerts 中国地图热力图

vue echerts 中国地图热力图

效果图展示

在这里插入图片描述

<template>
<div id="chinaEcharts" ref="chinaEcharts" v-loading='loading2'  class="leftEcharts" style="height:400px;"></div>
</template>

后台给的格式是这种

在这里插入图片描述
我是想要对照着改变 原本的格式是这种

[
    {"name":"南海诸岛","value":0},
    {"name": "北京", "value": 0},
    {"name": "天津", "value": 0},
    {"name": "上海", "value": 0},
    {"name": "重庆", "value": 0},
    {"name": "河北", "value": 0},
    {"name": "河南", "value": 0},
    {"name": "云南", "value": 0},
    {"name": "辽宁", "value": 0},
    {"name": "黑龙江", "value": 0},
    {"name": "湖南", "value": 0},
    {"name": "安徽", "value": 0},
    {"name": "山东", "value": 0},
    {"name": "新疆", "value": 0},
    {"name": "江苏", "value": 0},
    {"name": "浙江", "value": 0},
    {"name": "江西", "value": 0},
    {"name": "湖北", "value": 0},
    {"name": "广西", "value": 0},
    {"name": "甘肃", "value": 0},
    {"name": "山西", "value": 0},
    {"name": "内蒙古", "value": 0},
    {"name": "陕西", "value": 0},
    {"name": "吉林", "value": 0},
    {"name": "福建", "value": 0},
    {"name": "贵州", "value": 0},
    {"name": "广东", "value": 0},
    {"name": "青海", "value": 0},
    {"name": "西藏", "value": 0},
    {"name": "四川", "value": 0},
    {"name": "宁夏", "value": 0},
    {"name": "海南", "value": 0},
    {"name": "台湾", "value": 0},
    {"name": "香港", "value": 0},
    {"name": "澳门", "value": 0}
]
<script>
	import { Province_count} from '@/api/api.js';
	const elementResizeDetectorMaker = require("element-resize-detector");
	import 'echarts/map/js/china.js'  //echarts下载下来自身携带的china.js, 如果是npm下载的直接引入包里面的就可以,另外h5可以直接下载下来引入
	import echarts from 'echarts'
	export default {
    name: '',
    data() {
        return {
            loading2:true
        };
    },
    mounted(){   
        // 热力图
        this.getProvince_count()
     },
    created() {
    },
    methods: {
        getProvince_count(){
            Province_count().then(res=>{
                const {ReturnCode,Data}=res
                if(ReturnCode==200){
                    // console.log(Data.rows,'o02002')
                    let maxNum=Data.rows[0].value
                    for (const i in Data.rows) {
                        // console.log(Data.rows[i].name,'Data.rows[i].name')
                        if(Data.rows[i].name=='内蒙古自治区'){
                            Data.rows[i].name='内蒙古'
                        }else if(Data.rows[i].name=='宁夏回族自治区'){
                            Data.rows[i].name='宁夏'
                        }else if(Data.rows[i].name=='黑龙江省'){
                                Data.rows[i].name='黑龙江'
                        }else{
                            Data.rows[i].name=(Data.rows[i].name).substring(0,2)
                        }
                    }
                    for (const j in province) {
                        for (const m in Data.rows) {
                            if(province[j].name==Data.rows[m].name){
                                province[j].value=Data.rows[m].value
                            }
                        }
                    }
                    this.chinaEcharts(province,maxNum)
                }
                this.loading2=false
            })
        },

    //    热力图
    chinaEcharts(dataList,maxNum) {
      let this_ = this;
      let myChart = echarts.init(document.getElementById('chinaEcharts'));
      let resizeTimer = null;
      let option = {
            tooltip: {
                    formatter:function(params,ticket, callback){
                        return params.seriesName+'<br />'+params.name+':'+params.value
                    }//数据格式化
                },
            visualMap: {
                min: 0,
                max: maxNum,
                left: 'left',
                top: 'bottom',
                text: ['高','低'],//取值范围的文字
                inRange: {
                    color: ['#e0ffff', '#006edd']//取值范围的颜色
                },
                show:true//图注
            },
            geo: {
                map: 'china',
                roam: false,//不开启缩放和平移
                zoom:1.23,//视角缩放比例
                label: {
                    normal: {
                        show: true,
                        fontSize:'10',
                        color: 'rgba(0,0,0,0.7)'
                    }
                },
                itemStyle: {
                    normal:{
                        borderColor: 'rgba(0, 0, 0, 0.2)'
                    },
                    emphasis:{
                        areaColor: '#F3B329',//鼠标选择区域颜色
                        shadowOffsetX: 0,
                        shadowOffsetY: 0,
                        shadowBlur: 20,
                        borderWidth: 0,
                        shadowColor: 'rgba(0, 0, 0, 0.5)'
                    }
                }
            },
            series : [
                {
                    name: '信息量',
                    type: 'map',
                    geoIndex: 0,
                    data:dataList
                }
            ]
        };
      myChart.setOption(option);
    
      window.addEventListener('resize', function () {
        if (resizeTimer) clearTimeout(resizeTimer);
        resizeTimer = setTimeout(function () {
          myChart.resize();
        }, 100)
      })
    },
    }
};
</script>
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue项目中创建高德地图热力图,可以按照以下步骤进行: 1. 引入高德地图API 在 `index.html` 文件中引入高德地图API: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script> ``` 2. 创建地图Vue 组件中创建地图容器和地图对象: ```html <template> <div id="map-container"></div> </template> <script> export default { mounted() { this.map = new AMap.Map('map-container', { zoom: 10, center: [116.397428, 39.90923] }); } } </script> ``` 3. 加载热力图插件 在 `mounted` 钩子函数中加载热力图插件: ```javascript mounted() { // 创建地图对象 this.map = new AMap.Map('map-container', { zoom: 10, center: [116.397428, 39.90923] }); // 加载热力图插件 AMap.plugin(['AMap.Heatmap'], () => { // 创建热力图对象 this.heatmap = new AMap.Heatmap(this.map, { radius: 25, // 半径 opacity: [0, 0.8], // 透明度 gradient: { 0.5: 'blue', 0.65: 'rgb(117,211,248)', 0.7: 'rgb(0, 255, 0)', 0.9: '#ffea00', 1.0: 'red' } // 渐变色 }); }); } ``` 4. 准备热力图数据 在组件中定义一个数组,用于存储热力图的数据: ```javascript data() { return { heatmapData: [ {lng: 116.191031, lat: 39.988585, count: 10}, {lng: 116.389275, lat: 39.925818, count: 20}, {lng: 116.287444, lat: 39.810742, count: 30}, {lng: 116.481707, lat: 39.940089, count: 40}, {lng: 116.410588, lat: 39.880172, count: 50} ] } } ``` 其中,`lng` 和 `lat` 表示经纬度,`count` 表示热力值。 5. 绑定数据到热力图 在 `mounted` 钩子函数中,将数据绑定到热力图对象: ```javascript this.heatmap.setDataSet({ data: this.heatmapData, max: 100 // 最大值,用于计算渐变色 }); ``` 6. 完整代码 ```html <template> <div id="map-container"></div> </template> <script> export default { data() { return { heatmapData: [ {lng: 116.191031, lat: 39.988585, count: 10}, {lng: 116.389275, lat: 39.925818, count: 20}, {lng: 116.287444, lat: 39.810742, count: 30}, {lng: 116.481707, lat: 39.940089, count: 40}, {lng: 116.410588, lat: 39.880172, count: 50} ] } }, mounted() { // 创建地图对象 this.map = new AMap.Map('map-container', { zoom: 10, center: [116.397428, 39.90923] }); // 加载热力图插件 AMap.plugin(['AMap.Heatmap'], () => { // 创建热力图对象 this.heatmap = new AMap.Heatmap(this.map, { radius: 25, // 半径 opacity: [0, 0.8], // 透明度 gradient: { 0.5: 'blue', 0.65: 'rgb(117,211,248)', 0.7: 'rgb(0, 255, 0)', 0.9: '#ffea00', 1.0: 'red' } // 渐变色 }); // 绑定数据到热力图 this.heatmap.setDataSet({ data: this.heatmapData, max: 100 // 最大值,用于计算渐变色 }); }); } } </script> <style> #map-container { width: 100%; height: 300px; } </style> ``` 以上就是在Vue项目中创建高德地图热力图的步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值