• vue中实现百度地图全国与省市地图切换


    前言

    本文主要是用于示例全国地图,点击省市地图直接跳转到该省市地图并展示,可以拓展在地图上显示标记点(本文未做示例),后续有完整代码,但是由于需要与本来项目业务代码进项分割,可能会有些问题,地图渲染上所需要的json文件,有资源链接,但是需要积分,在网上搜搜 也会有相关资源,不是非必要使用该json文件,注意一下导入的文件名称即可


    一、示例代码

    1.1 地图json文件

    资源地址:百度地图全国以及各省json文件

    1.2 示例解析

    1.dom层
    默认渲染全国地图,返回按钮主要用于点击省市地图跳转进入省市的地图的时候,设置一个返回按钮,返回到全国地图

     <el-button size="mini"
                type="primary"
                v-if="mapBackBtnShow"
                @click="drawBaiduMap">
                返回
      el-button>
      <div ref="mapChartsRef"
           style="width: 100%;height: 100%;z-index: 99;">
      div>
    

    2.逻辑准备
    引入echarts

    import * as echarts from 'echarts'
    

    控制返回按钮显示隐藏

    mapBackBtnShow: false,
    

    3.主要逻辑方法

    drawBaiduMap() {
          var that = this
          //1.中国地图
          var chinaMap = require('./homePage/chart.china.json')
          //2.台湾省地图
          var taiWanMap = require('./homePage/provinceJSON/taiwan.json')
          //3.海南省地图
          var haiNanMap = require('./homePage/provinceJSON/hainan.json')
          //4.安徽省地图
          var anHuiMap = require('./homePage/provinceJSON/anhui.json')
          //5.江西省地图
          var jiangXiMap = require('./homePage/provinceJSON/jiangxi.json')
          //6.湖南省地图
          var huNanMap = require('./homePage/provinceJSON/hunan.json')
          //7.云南省地图
          var yunNanMap = require('./homePage/provinceJSON/yunnan.json')
          //8.贵州省地图
          var guiZhouMap = require('./homePage/provinceJSON/guizhou.json')
          //9.广东省地图
          var guangDongMap = require('./homePage/provinceJSON/guangdong.json')
          //10.福建省地图
          var fuJianMap = require('./homePage/provinceJSON/fujian.json')
          //11.浙江省地图
          var zheJiangMap = require('./homePage/provinceJSON/zhejiang.json')
          //12.江苏省地图
          var jiangSuMap = require('./homePage/provinceJSON/jiangsu.json')
          //13.四川省地图
          var siChuanMap = require('./homePage/provinceJSON/sichuan.json')
          //14.重庆市市地图
          var chongQingMap = require('./homePage/provinceJSON/chongqing.json')
          //15.湖北省地图
          var huBeiMap = require('./homePage/provinceJSON/hubei.json')
          //16.河南省地图
          var heNanMap = require('./homePage/provinceJSON/henan.json')
          //17.山东省地图
          var shanDongMap = require('./homePage/provinceJSON/shandong.json')
          //18.吉林省地图
          var jiLinMap = require('./homePage/provinceJSON/jilin.json')
          //19.辽宁省地图
          var liaoNingMap = require('./homePage/provinceJSON/liaoning.json')
          //20.天津市市地图
          var tianJinMap = require('./homePage/provinceJSON/tianjin.json')
          //21.北京市市地图
          var beiJingMap = require('./homePage/provinceJSON/beijing.json')
          //22.河北省地图
          var heBeiMap = require('./homePage/provinceJSON/hebei.json')
          //23.山西省地图
          var shanXiMap = require('./homePage/provinceJSON/shanxi.json')
          //24.陕西省地图
          var shanXi2Map = require('./homePage/provinceJSON/shangxi.json')
          //25.宁夏回族自治区省地图
          var ningXiaMap = require('./homePage/provinceJSON/ningxia.json')
          //26.青海省地图
          var qingHaiMap = require('./homePage/provinceJSON/qinghai.json')
          //27.西藏自治区地图
          var xiZangMap = require('./homePage/provinceJSON/xizang.json')
          //28.黑龙江省地图
          var heiLongJiangMap = require('./homePage/provinceJSON/heilongjiang.json')
          //29.内蒙古自治区地图
          var neimengGuMap = require('./homePage/provinceJSON/neimenggu.json')
          //30.甘肃省地图
          var ganSuMap = require('./homePage/provinceJSON/gansu.json')
          //31.新疆维吾尔自治区省地图
          var xinJiangMap = require('./homePage/provinceJSON/xinjiang.json')
          //32.广西壮族自治区地图
          var guangxiMap = require('./homePage/provinceJSON/guangxi.json')
          //33.上海市地图
          var shangHaiMap = require('./homePage/provinceJSON/shanghai.json')
          //34.香港
          var xiangGangMap = require('./homePage/provinceJSON/xianggang.json')
          //35.澳门
          var aoMenGangMap = require('./homePage/provinceJSON/aomen.json')
    
          //设置初始地图
          var mapname = chinaMap
          var mapJson = [
            {
              name: '台湾省',
              json: taiWanMap,
            },
            {
              name: '海南省',
              json: haiNanMap,
            },
            {
              name: '安徽省',
              json: anHuiMap,
            },
            {
              name: '江西省',
              json: jiangXiMap,
            },
            {
              name: '湖南省',
              json: huNanMap,
            },
            {
              name: '云南省',
              json: yunNanMap,
            },
            {
              name: '贵州省',
              json: guiZhouMap,
            },
            {
              name: '广东省',
              json: guangDongMap,
            },
            {
              name: '福建省',
              json: fuJianMap,
            },
            {
              name: '浙江省',
              json: zheJiangMap,
            },
            {
              name: '江苏省',
              json: jiangSuMap,
            },
            {
              name: '四川省',
              json: siChuanMap,
            },
            {
              name: '重庆市',
              json: chongQingMap,
            },
            {
              name: '湖北省',
              json: huBeiMap,
            },
            {
              name: '河南省',
              json: heNanMap,
            },
            {
              name: '山东省',
              json: shanDongMap,
            },
            {
              name: '吉林省',
              json: jiLinMap,
            },
            {
              name: '辽宁省',
              json: liaoNingMap,
            },
            {
              name: '天津市',
              json: tianJinMap,
            },
            {
              name: '上海市',
              json: shangHaiMap,
            },
            {
              name: '北京市',
              json: beiJingMap,
            },
            {
              name: '河北省',
              json: heBeiMap,
            },
            {
              name: '山西省',
              json: shanXiMap,
            },
            {
              name: '陕西省',
              json: shanXi2Map,
            },
            {
              name: '宁夏回族自治区',
              json: ningXiaMap,
            },
            {
              name: '青海省',
              json: qingHaiMap,
            },
            {
              name: '西藏自治区',
              json: xiZangMap,
            },
            {
              name: '黑龙江省',
              json: heiLongJiangMap,
            },
            {
              name: '内蒙古自治区',
              json: neimengGuMap,
            },
            {
              name: '甘肃省',
              json: ganSuMap,
            },
            {
              name: '新疆维吾尔自治区',
              json: xinJiangMap,
            },
            {
              name: '广西壮族自治区',
              json: guangxiMap,
            },
            {
              name: '香港特别行政区',
              json: xiangGangMap,
            },
            {
              name: '澳门特别行政区',
              json: aoMenGangMap,
            },
          ]
          this.mapBackBtnShow = false
          var myChart = echarts.init(this.$refs.mapChartsRef)
          myChart.showLoading({ text: '正在加载数据' }) //增加等待提示
          //点击事件
          myChart.on('click', function (e) {
              var chooseName = mapJson.filter((item) => {
                return item.name.includes(e.name)
              })
              mapname = chooseName[0].json
              that.mapBackBtnShow = true
              //绘制地图
              mapInit()
          })
          //设置初始化时间
          setTimeout(function () {
            mapInit()
          }, 500)
          //创建地图
          var mapInit = () => {
            echarts.registerMap('China', mapname)
            //文件加载的动画
            myChart.hideLoading()
            //地图开始
            var option = {
              //设置背景颜色
              backgroundColor: '#fff',
              geo: {
                map: 'China', //地图为刚刚设置的China
                top: 10,
                zoom: 1, //当前视角的缩放比例
                roam: false, //是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启
              },
              tooltip: {
                show: true,
                triggerOn: 'mousemove',
                padding: [5, 8],
                enterable: true,
                transitionDuration: 1,
                textStyle: {
                  color: '#606266',
                  decoration: 'none',
                },
              },
              series: [
                //数据系列
                {
                  type: 'map', //地图类型
                  geoIndex: 0,
                  aspectScale: 0.75, //长宽比
                  //地图上文字
                  label: {
                    normal: {
                      show: false, //是否显示标签
                      textStyle: {
                        color: '#fff',
                      },
                    },
                    emphasis: {
                      textStyle: {
                        color: '#333',
                      },
                    },
                  },
                  //地图区域的多边形 图形样式
                  itemStyle: {
                    normal: {
                      borderColor: '#909399',
                      borderWidth: 1.5,
                      // areaColor: '#12235c',
                      areaColor: '#eee',
                    },
                    emphasis: {
                      areaColor: '#FFDF33',
                      borderWidth: 0,
                    },
                  },
                  // zoom: 1.2, //当前视角的缩放比例
                  //是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启
                  roam: false,
                  map: 'China', //使用中国地图
                },
              ],
            }
            myChart.setOption(option)
            window.addEventListener('resize', () => {
                myChart.resize()
            })
          }
        },
    

    在这里插入图片描述
    在这里插入图片描述

    二、完整代码

    <template>
    	<div>
    		<el-button size="mini"
    		            type="primary"
    		            v-if="mapBackBtnShow"
    		            @click="drawBaiduMap">
    		            返回
    		  </el-button>
    		  <div ref="mapChartsRef"
    		       style="width: 100%;height: 100%;z-index: 99;">
    	  </div>
      </div>
    </template>
    
    <script>
    import * as echarts from 'echarts'
    export default {
    	data(){
    		return {
    			mapBackBtnShow: false,
    	},
    	mounted() {
    		this.drawBaiduMap()
    	},
    	methods:{
    		    /* 地图 */
        drawBaiduMap() {
          var that = this
          //1.中国地图
          var chinaMap = require('./homePage/chart.china.json')
          //2.台湾省地图
          var taiWanMap = require('./homePage/provinceJSON/taiwan.json')
          //3.海南省地图
          var haiNanMap = require('./homePage/provinceJSON/hainan.json')
          //4.安徽省地图
          var anHuiMap = require('./homePage/provinceJSON/anhui.json')
          //5.江西省地图
          var jiangXiMap = require('./homePage/provinceJSON/jiangxi.json')
          //6.湖南省地图
          var huNanMap = require('./homePage/provinceJSON/hunan.json')
          //7.云南省地图
          var yunNanMap = require('./homePage/provinceJSON/yunnan.json')
          //8.贵州省地图
          var guiZhouMap = require('./homePage/provinceJSON/guizhou.json')
          //9.广东省地图
          var guangDongMap = require('./homePage/provinceJSON/guangdong.json')
          //10.福建省地图
          var fuJianMap = require('./homePage/provinceJSON/fujian.json')
          //11.浙江省地图
          var zheJiangMap = require('./homePage/provinceJSON/zhejiang.json')
          //12.江苏省地图
          var jiangSuMap = require('./homePage/provinceJSON/jiangsu.json')
          //13.四川省地图
          var siChuanMap = require('./homePage/provinceJSON/sichuan.json')
          //14.重庆市市地图
          var chongQingMap = require('./homePage/provinceJSON/chongqing.json')
          //15.湖北省地图
          var huBeiMap = require('./homePage/provinceJSON/hubei.json')
          //16.河南省地图
          var heNanMap = require('./homePage/provinceJSON/henan.json')
          //17.山东省地图
          var shanDongMap = require('./homePage/provinceJSON/shandong.json')
          //18.吉林省地图
          var jiLinMap = require('./homePage/provinceJSON/jilin.json')
          //19.辽宁省地图
          var liaoNingMap = require('./homePage/provinceJSON/liaoning.json')
          //20.天津市市地图
          var tianJinMap = require('./homePage/provinceJSON/tianjin.json')
          //21.北京市市地图
          var beiJingMap = require('./homePage/provinceJSON/beijing.json')
          //22.河北省地图
          var heBeiMap = require('./homePage/provinceJSON/hebei.json')
          //23.山西省地图
          var shanXiMap = require('./homePage/provinceJSON/shanxi.json')
          //24.陕西省地图
          var shanXi2Map = require('./homePage/provinceJSON/shangxi.json')
          //25.宁夏回族自治区省地图
          var ningXiaMap = require('./homePage/provinceJSON/ningxia.json')
          //26.青海省地图
          var qingHaiMap = require('./homePage/provinceJSON/qinghai.json')
          //27.西藏自治区地图
          var xiZangMap = require('./homePage/provinceJSON/xizang.json')
          //28.黑龙江省地图
          var heiLongJiangMap = require('./homePage/provinceJSON/heilongjiang.json')
          //29.内蒙古自治区地图
          var neimengGuMap = require('./homePage/provinceJSON/neimenggu.json')
          //30.甘肃省地图
          var ganSuMap = require('./homePage/provinceJSON/gansu.json')
          //31.新疆维吾尔自治区省地图
          var xinJiangMap = require('./homePage/provinceJSON/xinjiang.json')
          //32.广西壮族自治区地图
          var guangxiMap = require('./homePage/provinceJSON/guangxi.json')
          //33.上海市地图
          var shangHaiMap = require('./homePage/provinceJSON/shanghai.json')
          //34.香港
          var xiangGangMap = require('./homePage/provinceJSON/xianggang.json')
          //35.澳门
          var aoMenGangMap = require('./homePage/provinceJSON/aomen.json')
    
          //设置初始地图
          var mapname = chinaMap
          var mapJson = [
            {
              name: '台湾省',
              json: taiWanMap,
            },
            {
              name: '海南省',
              json: haiNanMap,
            },
            {
              name: '安徽省',
              json: anHuiMap,
            },
            {
              name: '江西省',
              json: jiangXiMap,
            },
            {
              name: '湖南省',
              json: huNanMap,
            },
            {
              name: '云南省',
              json: yunNanMap,
            },
            {
              name: '贵州省',
              json: guiZhouMap,
            },
            {
              name: '广东省',
              json: guangDongMap,
            },
            {
              name: '福建省',
              json: fuJianMap,
            },
            {
              name: '浙江省',
              json: zheJiangMap,
            },
            {
              name: '江苏省',
              json: jiangSuMap,
            },
            {
              name: '四川省',
              json: siChuanMap,
            },
            {
              name: '重庆市',
              json: chongQingMap,
            },
            {
              name: '湖北省',
              json: huBeiMap,
            },
            {
              name: '河南省',
              json: heNanMap,
            },
            {
              name: '山东省',
              json: shanDongMap,
            },
            {
              name: '吉林省',
              json: jiLinMap,
            },
            {
              name: '辽宁省',
              json: liaoNingMap,
            },
            {
              name: '天津市',
              json: tianJinMap,
            },
            {
              name: '上海市',
              json: shangHaiMap,
            },
            {
              name: '北京市',
              json: beiJingMap,
            },
            {
              name: '河北省',
              json: heBeiMap,
            },
            {
              name: '山西省',
              json: shanXiMap,
            },
            {
              name: '陕西省',
              json: shanXi2Map,
            },
            {
              name: '宁夏回族自治区',
              json: ningXiaMap,
            },
            {
              name: '青海省',
              json: qingHaiMap,
            },
            {
              name: '西藏自治区',
              json: xiZangMap,
            },
            {
              name: '黑龙江省',
              json: heiLongJiangMap,
            },
            {
              name: '内蒙古自治区',
              json: neimengGuMap,
            },
            {
              name: '甘肃省',
              json: ganSuMap,
            },
            {
              name: '新疆维吾尔自治区',
              json: xinJiangMap,
            },
            {
              name: '广西壮族自治区',
              json: guangxiMap,
            },
            {
              name: '香港特别行政区',
              json: xiangGangMap,
            },
            {
              name: '澳门特别行政区',
              json: aoMenGangMap,
            },
          ]
          this.mapBackBtnShow = false
          var myChart = echarts.init(this.$refs.mapChartsRef)
          myChart.showLoading({ text: '正在加载数据' }) //增加等待提示
          //点击事件
          myChart.on('click', function (e) {
              var chooseName = mapJson.filter((item) => {
                return item.name.includes(e.name)
              })
              mapname = chooseName[0].json
              that.mapBackBtnShow = true
              //绘制地图
              mapInit()
          })
          //设置初始化时间
          setTimeout(function () {
            mapInit()
          }, 500)
          //创建地图
          var mapInit = () => {
            echarts.registerMap('China', mapname)
            //文件加载的动画
            myChart.hideLoading()
            //地图开始
            var option = {
              //设置背景颜色
              backgroundColor: '#fff',
              geo: {
                map: 'China', //地图为刚刚设置的China
                top: 10,
                zoom: 1, //当前视角的缩放比例
                roam: false, //是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启
              },
              tooltip: {
                show: true,
                triggerOn: 'mousemove',
                padding: [5, 8],
                enterable: true,
                transitionDuration: 1,
                textStyle: {
                  color: '#606266',
                  decoration: 'none',
                },
              },
              series: [
                //数据系列
                {
                  type: 'map', //地图类型
                  geoIndex: 0,
                  aspectScale: 0.75, //长宽比
                  //地图上文字
                  label: {
                    normal: {
                      show: false, //是否显示标签
                      textStyle: {
                        color: '#fff',
                      },
                    },
                    emphasis: {
                      textStyle: {
                        color: '#333',
                      },
                    },
                  },
                  //地图区域的多边形 图形样式
                  itemStyle: {
                    normal: {
                      borderColor: '#909399',
                      borderWidth: 1.5,
                      // areaColor: '#12235c',
                      areaColor: '#eee',
                    },
                    emphasis: {
                      areaColor: '#FFDF33',
                      borderWidth: 0,
                    },
                  },
                  // zoom: 1.2, //当前视角的缩放比例
                  //是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启
                  roam: false,
                  map: 'China', //使用中国地图
                },
              ],
            }
            myChart.setOption(option)
            window.addEventListener('resize', () => {
                myChart.resize()
            })
          }
        },
    	}
    }
    </script>
    
  • 相关阅读:
    论文笔记 Where Would I Go Next? Large Language Models as Human Mobility Predictor
    QLable提升类
    Code For Better 谷歌开发者之声——盘点大家用过的Google 产品
    图像边缘检测--(Sobel、Laplacian、Canny)
    【MySQL】mysql数据类型
    海滨体育馆管理系统/基于Spring Boot的海滨体育馆管理系统设计(源码+数据库+文档)
    CAPL学习之路-DoIP相关函数
    linux设置应用开机自启(通用:mysql、jar、nginx、solr...)
    Robotaxi商业化迎来重要拐点,Momenta如何破局“下半场”?
    THREE.JS 3D模型服务器报404问题(VUE fbx文件在本地能显示 服务器上不显示报404)
  • 原文地址:https://blog.csdn.net/weixin_43637720/article/details/139824316