阅读 143

admin-vuetify | echarts-绘制地图

前言

需要实现人口密度展示的地图,通过颜色的深浅来直观的展示区域的人口多少,笔者实现了一个从全国-省-市的demo。查看演示效果请点击此链接http://admin-vuetify.bysir.top:1080/#/map
效果如下:

全国

四川省

核心代码

option关键配置项

  1. 根据人口的多少,颜色的深浅展示
// option对象
 {
  visualMap: {
            min: 55,
            max: 10550,
            text: ['High', 'Low'],
            realtime: false,
            calculable: true,
              // 这里颜色由浅入深配置
            inRange: {
                color: ['#D1C4E9', '#673AB7', ‘#311B92’]
            },
        },
}

官方文档:https://echarts.apache.org/zh/option.html#visualMap

  1. 悬停区域颜色配置
// option对象
{
series:[
{
 emphasis: {
     label: {
         show: true,
          color: "#fff",
       },
     itemStyle: {
           // 区域颜色
           areaColor: '#512DA8',
            borderColor: '#fff',
            color: '#fff',
            borderWidth: 2
         },
    },
}
]
}

官方文档:https://echarts.apache.org/zh/option.html#series-map.emphasis

  1. 提示框自定义
// option对象
{
  tooltip: {
            trigger: 'item',
            backgroundColor: 'rgba(50,50,50,0.7)',
            borderColor: '#333',
            textStyle: {
                color: '#fff',
                fontSize: 12
            },
            formatter: (item) => {
                let html = `${item.name}`
                if (item.data) {
                    html += `<p style="font-size:12px">人口数量:${(item.data.value)}万</p>
               `
                }
                return html
            }
        },
}

官方文档:https://echarts.apache.org/zh/option.html#tooltip

核心代码

function initMap() {
  const chartDom = document.getElementById('map');
  const myChart = this.$echarts.init(chartDom);
 this.myChart = myChart;
 // 1. 获取geoJson数据
  this.myChart && this.myChart.showLoading();
  const geoJson = await this.getGeoJSONData(code);
  this.$echarts.registerMap('ZH', geoJson);
 // 2. 获取人员及坐标点数据
  Promise.all([this.getPeopleInfo(code),    this.getPosInfo(code)]).then(async (res) => {
        const dataList = res[0]
        const makerPoints = res[1]
        const options = this.setOptions(dataList, makerPoints);
        this.myChart.setOption(options);
        this.myChart.hideLoading();
       
}
  

开发中遇到的问题?

  1. 地图地市名称标签位置不合适该如何调整?
    https://segmentfault.com/q/1010000013736260
    https://github.com/apache/echarts/issues/4379#issuecomment-257765948

  2. 多次出发点击事件
    地图不能重复绑定点击事件,在绑定点击事件之前,需要去关取消之前绑定过的事件。

myChart.off("click")

工具

最后

项目github地址:
https://github.com/merrylmr/admin-vuetify
完整的代码请查看:/src/views/charts/Map.vue

期待你的star!!!

作者:merrylmr

原文链接:https://www.jianshu.com/p/a953559fd502

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐