首页 > 其他分享 >echarts地图实现多级下钻功能

echarts地图实现多级下钻功能

时间:2022-12-11 14:11:17浏览次数:35  
标签:name JSON self 多级 地图 chart json echarts

<!--实现全国地图下钻,由于涉及JSON文件较多,所以就直接引用在线JSON https://geo.datav.aliyun.com/areas_v3/bound/-->
<template>
    <div>
        <div class="areaRankingAll" ref="areaRankingAll" :style="{width: '700px', height: '500px',}">
        </div>
        <div>
            <button type="button" @click="cancel">返回上一级</button>
        </div>
    </div>
</template>

<script>
    import axios from 'axios'//采用axios动态请求数据
    var echarts = require('echarts')
    export default {
        name: "areaRankingAll",
        mounted() {
            this.initChart();//初始化地图
        },
        data(){
            return{
                myChart: null,
                //线上请求JSON文件数据地址
                publicUrl:"https://geo.datav.aliyun.com/areas_v3/bound/",
                //allCode 区域行政编码信息
                allCode:[
                    // {name:"廉江市",adcode:"440881"}
                ],
            }
        },
        methods: {
            cancel(){
                this.initChart();
            },
            getGeoJson(jsonName){
                return axios.get(this.publicUrl+jsonName)
            },
            initEcharts(geoJson, name, chart) {
                let self = this;
                // this.myChart = echarts.init(this.$refs.areaRankingAll);
                echarts.registerMap(name, geoJson);
                let option = {
                    title: {
                        text: name,
                    },
                    tooltip: {
                        trigger: 'item',
                        formatter: '{b}<br/>{c} (数量)'
                    },
                    visualMap: {
                        min: 100,
                        max: 5000,
                        text: ['High', 'Low'],
                        realtime: false,
                        calculable: true,
                        inRange: {
                            color: ['lightskyblue', 'yellow', 'orangered']
                        }
                    },
                    series: [{
                        type: 'map',
                        map: name,
                        label: {
                            // show: true
                        },
                        data: [],
                    }]
                }
                chart.setOption(option);
                chart.off("click");
                chart.on('click',params=>{
                    //点击区域时的行政编码,然后再进行匹配
                    let clickCode = self.allCode.filter(areaJson => areaJson.name === params.name)[0].adcode;
                    //1、如果要实现多级下钻并且展示子区域的话,下钻点击事件请求的JSON必须是该点击区域的全面父级JSON(即没有自己只有孩子们组成)
                    //2、如果要实现地图只下钻一次,并且不展示目标下钻区域的子区域。如第一层地图是中国,实现点击某个省下钻到该省,但是不展示该省的子区域,那么下钻点击事件请求的JSON必须是该点击区域的确切json(即只有自己没有孩子们)
                    //声明:比如这里线上引用的父级JSON带有:地域行政编码_full.json(如中国 100000_full.json),子级JSON是行政编码.json(如廉江市 440881.json)
                    self.getGeoJson(clickCode + '_full.json').then(res =>{
                        self.initEcharts(res.data, params.name, chart)
                    }).catch(err =>{
                        console.log(err,"err")
                        self.getGeoJson('100000_full.json').then(China => {
                            self.initEcharts(China.data, '中华人民共和国', chart)
                        })
                    })
                    console.log(params);
                })
            },
            //带头函数-初始化
            initChart(){
                let chart = echarts.init(this.$refs.areaRankingAll);
                //this.allCode获取所有的区域编码信息
                this.getGeoJson('all.json').then(all => {
                    this.allCode = all.data;
                });
                //初始化地图展示
                this.getGeoJson('100000_full.json').then(China => {
                    this.initEcharts(China.data, '中华人民共和国', chart);
                });
            }
        }
    }
</script>

<style scoped>

</style>

 

标签:name,JSON,self,多级,地图,chart,json,echarts
From: https://www.cnblogs.com/qdyzhuang/p/16973636.html

相关文章

  • 百度地图API显示多个标注点带提示的代码
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xht......
  • vue使用高德地图,marker低于1000,滑动卡顿问题的探究(已解决)
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • echarts 多组折线图
    1需求根据数据判断画几个折线图。在一个折线图中画出多组数据。2代码//颜色红,橙,淡红...varcolorList=['#ff0000','#fe8104','#fe4365','#F4CB29','#4B7CF3','#......
  • 地下城地图图块生成算法
    一.概述生成地下城,包含房间和迷宫通路。类似:示例效果一示例效果二二.思路1.生成迷宫通路从房间的边缘坐标XY为奇数的格子生成迷宫,确保房间和迷宫通路之间有......
  • Echarts-常见配置
    series:系列列表。每个系列通过type决定自己的图标类型xAxis:直角坐标系grid中的x轴yAxis:直角坐标系grid中的y轴grid:直角坐标系内回执网格这个网格距离topbottom......
  • echarts-1.不渲染的问题
    1问题1.1今日开发中遇到同时设置两个echarts,切换的时候其中一个不渲染,一个渲染成功一个渲染失败。2排查原因2.1先是排查echarts是否选中,确认已选中。2.2然后排查e......
  • echarts的option有哪些配置项
    正在思考,请等待......全局配置项:backgroundColor、textStyle、title、tooltip、legend、dataZoom、visualMap、toolbox、animation、parallel、parallelAxis、calendar、......
  • echarts map地图中绘制浙江省市区县乡镇多级联动边界下钻的最新geojson数据文件获取和
    目录EChartsMap地图的显示GeoJSON数据文件获取在ECharts中绘制浙江省的数据EChartsMap地图的显示ECharts支持地理坐标显示,专门提供了一个geo组件,在setOption中提供opti......
  • vue+elementUI 使用腾讯地图
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 腾讯地图坐标拾取器(自实现,可回调结果)
    简介腾讯地图坐标拾取器。基于腾讯地图API和Layui实现类似于微信小程序wx.getLocation(Objectobject)效果。演示JQ22GitHub(优先更新!)示例<!doctypehtml><......