Echarts+高德地图,获取全国省市区,区域板块地图获取并高亮显示

这篇具有很好参考价值的文章主要介绍了Echarts+高德地图,获取全国省市区,区域板块地图获取并高亮显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当用户选择省市区之后,可以看到对应区域的高亮显示。

如图:

echarts引入高德地图,echarts,前端,javascript,react.js

之前用户选择的是江苏省,因此当前高亮显示的是江苏省地图板块,如果之前用户选择的是成都市,那么地图则会变成四川省的版图,高亮显示成都市,如下图:

echarts引入高德地图,echarts,前端,javascript,react.js

可以继续下钻,选择区域高亮显示。

这里分享一个工具: DataV.GeoAtlas地理小工具系列

通过adcode码可以查看全国的地图板块。

注意!注意!具体操作步骤来啦!

1.创建一个存放地图的容器

<div id="charts"></div>

2.获取容器

 myChart = echarts.init(document.getElementById("charts"));

3.运用高德地图获取adcode码,此处我用的是axios来进行获取

 axios
      .get(
        `https://restapi.amap.com/v3/geocode/geo?address=${
          district?city:!district && city?province:!district && !city?'中国':'中国'
        }&output=JSON&key=af092dccf*********cf19ade46`
      )
      .then((res) => {
        adcode = res.data.geocodes[0].adcode;
})

这里需要注意几个地方:

${district?city:!district && city?province:!district && !city?'中国':'中国'}

以上代码意思是:如果我拿到了区名(锦江区),那么这里就应该用市名(成都市)去生成地图,如果拿到了市名(成都市),那么这里就用省名(四川省)生成地图,以此类推,如果拿到了省名(四川省),那么就用全国(中国)去生成地图。(当然这几个参数是我从后端拿到的数据哈)

key=af092dccf1***********9ade46

这个key就是你在高德地图上申请的key,具体怎么申请可以百度一下。

 adcode = res.data.geocodes[0].adcode;

然后就拿到了当前选择区域的adcode

4.通过adcode码,获取到区域地图,这里是通过上面分享的工具DataV.GeoAtlas地理小工具系列

打开之后是这样的:

echarts引入高德地图,echarts,前端,javascript,react.js

这里就有请求地址,可以拿到地图,地址里面的 100000也就是中国的adcode。你可以试试输入不同的adcode码左侧会显示不同的区域地图。

具体操作:

 myChart.showLoading();
        axios
          .get(
            `https://geo.datav.aliyun.com/areas_v3/bound/${
              adcode == 0 ? 100000 : adcode
            }_full.json`
          )
          .then((geoJson) => {
            console.log(geoJson);

            //获取所有省、市
            // console.log(geoJson.data.features);
            let allData = geoJson.data.features;
            let seriesData = [];
            allData.forEach((item) => {
              // console.log(item.properties.name);
              // console.log(item);
              let obj;
              if (item.properties.name) {
                if (
                  item.properties.name == province ||
                  item.properties.name == city ||
                  item.properties.name == district
                ) {
                  // console.log(item.properties.center);
                  setLongitudeLatitude(item.properties.center);
                  obj = {
                    name: item.properties.name,
                    value: measure,
                    selected: true,
                  };
                } else {
                  obj = {
                    name: item.properties.name,
                    selected: false,
                  };
                }
                seriesData.push(obj);
              }
            });
            myChart.hideLoading();
            echarts.registerMap("ZG", geoJson.data);
            myChart.setOption(
              (option = {
                title: {},
                tooltip: {
                  trigger: "item",
                },
                series: [
                  {
                    type: "map",
                    map: "ZG",
                    silent: true, //禁用地图的hover事件
                    label: {
                      show: true,
                    },
                    data: seriesData,
                    zoom: 1, //当前视角的缩放比例
                    roam: true, //是否开启平游或缩放
                    scaleLimit: {
                      //滚轮缩放的极限控制
                      min: 1,
                      max: 3,
                    },
                  },
                ],
              })
            );
          });

这里解释一个地方:以下部分代码是找到高亮显示的区域,然后加载series.data里面

echarts引入高德地图,echarts,前端,javascript,react.js

接下来看看完整代码吧!

  let myChart;
  let option;
  const renderChart = (province, city, district, measure) => {
    myChart = echarts.init(document.getElementById("charts"));
    let adcode;
    axios
      .get(
        `https://restapi.amap.com/v3/geocode/geo?address=${
          district?city:!district && city?province:!district && !city?'中国':'中国'
        }&output=JSON&key=af092dc********cf19ade46`
      )
      .then((res) => {
        adcode = res.data.geocodes[0].adcode;
        myChart.showLoading();
        axios
          .get(
            `https://geo.datav.aliyun.com/areas_v3/bound/${
              adcode == 0 ? 100000 : adcode
            }_full.json`
          )
          .then((geoJson) => {
            console.log(geoJson);

            //获取所有省、市
            let allData = geoJson.data.features;
            let seriesData = [];
            allData.forEach((item) => {
              // console.log(item.properties.name);
              // console.log(item);
              let obj;
              if (item.properties.name) {
                if (
                  item.properties.name == province ||
                  item.properties.name == city ||
                  item.properties.name == district
                ) {
                  // console.log(item.properties.center);
                  setLongitudeLatitude(item.properties.center);
                  obj = {
                    name: item.properties.name,
                    value: measure,
                    selected: true,
                  };
                } else {
                  obj = {
                    name: item.properties.name,
                    selected: false,
                  };
                }
                seriesData.push(obj);
              }
            });
            myChart.hideLoading();
            echarts.registerMap("ZG", geoJson.data);
            myChart.setOption(
              (option = {
                title: {},
                tooltip: {
                  trigger: "item",
                },
                series: [
                  {
                    type: "map",
                    map: "ZG",
                    silent: true, //禁用地图的hover事件
                    label: {
                      show: true,
                    },
                    data: seriesData,
                    zoom: 1, //当前视角的缩放比例
                    roam: true, //是否开启平游或缩放
                    scaleLimit: {
                      //滚轮缩放的极限控制
                      min: 1,
                      max: 3,
                    },
                  },
                ],
              })
            );
          });
      });
  option && myChart.setOption(option);
  };

有什么问题一起交流哦,不过回复有点不及时。哈哈哈哈文章来源地址https://www.toymoban.com/news/detail-596147.html

到了这里,关于Echarts+高德地图,获取全国省市区,区域板块地图获取并高亮显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp在H5获取当前定位信息不需要SDK可直接获取城市(包括经纬度省市区和市区编码)

    最近在做获取用户当前定位信息的时候,发现uniapp官方提供的uni.getLocation(OBJECT)兼容性并不是特别好,光注意事项都是密密麻麻一大堆,在实际使用场景下,效果并不理想,也不是很稳定。于是便重新封装了一下腾讯地图的一些东西,提高了下兼容度!下边我会把我用的封装

    2024年02月07日
    浏览(39)
  • uni-app封装省市区下拉组件(后台获取数据)

    一.后台数据格式  PROCINCE:[{itemName:\\\'\\\',itemValue:\\\'\\\'}] CITY:[{itemName:\\\'\\\',itemValue}] AREA:[{itemName:\\\'\\\',itemValue}] 前端将地址数据缓存在了pinia中 前端主要使用picker进行勾选 二.代码

    2024年02月12日
    浏览(37)
  • 【uniapp+vue3+u-picker】获取中国省市区数据结构,省市区数据三级联动json文件完整版,已实现三级联动效果+省市区街道数据四级联动json文件完整版,已实现四级联动效果

    前言: 这个功能的实现,中间耽误了几天,在大佬的帮助下终于实现效果,匿名感谢xx大佬 要实现的效果如下: 1、首先需要获取省市区的数据,不考虑后端返数据,自己使用json文件的话,需要获取到完整的中国省市区数据 有个很不错的github源码可供参考,Administrative-divi

    2024年02月04日
    浏览(51)
  • 支付宝实现省市区三级联动my.multiLevelSelect(附带省市区js数据)

    可以供用户选择所在位置、喜好位置。可用于根据用户所选位置给用户提供该位置的特色美食,附近的电影院,周边环境等。 视频 支付宝省市区三级联动 图片 点击按钮button,让其弹框。用户可在弹框中选择位置,选中后让其显示在第三个view标签里 select 。 provinceAndCity.js数

    2024年02月09日
    浏览(84)
  • element ui 下拉菜单组件 结合springboot 实现省市区简易三级联动 动态查询 并修改地点的省市区

    目录 前言: 一.数据库表结构:  二.下拉菜单组件 2.1 效果展示 2.2下拉菜单的组件代码: 本篇博客,通过官网的学习,实现下拉菜单动态数据的传递与点击事件,如果只是按部就班的按照官网来,官网下拉菜单模板所提供的事件只能传死数据,很多博主都是照虎画猫,传递

    2024年02月12日
    浏览(49)
  • Vue------实现省市区三级联动

    本篇将用,vue框架实现省市区三级联动 三个下拉框,分别代表省、市、区 下面的任务就是,分别绑定 省、市、区三个下拉框: 点击省会出现所有的省份 点击对应的省份,市下拉框会对应出现对应的市 点击市会出现所有的市 点击对应的市,区下拉框会对应出现对应的区。

    2023年04月24日
    浏览(57)
  • 【uniapp】省市区下拉列表组件

    2024年04月11日
    浏览(33)
  • Axure教程—省市区三级联动(中继器)

    本文将教大家如何用AXURE中中继器制作省市区三级联动 一、效果 预览地址:https://t6gmmh.axshare.com 二、功能 选择省份、出现相应的市区,选择市区出现相应的区或县 省市区三级联动效果 三、制作 1、省 拖入一个矩形,命名为省,文字设置为”请选择“,如图: 在其下面拖入

    2024年02月09日
    浏览(47)
  • vue实现省市区三级联动地址选择组件

    昨天收到一个新的需求,需要选择地址,因此就要做一个省市区三级联动的组件来使用,在网上找了一些资源,然后进行了尝试,没想到就这么成功了!要记录一下方便后续使用。 效果如下:  下面就记录一下代码叭! 后面因为需要动态绑定,以及处理回显问题,就需要进

    2024年02月12日
    浏览(62)
  • 【JavaScript】原生js实现省市区联动效果

    😉博主:初映CY的前说(前端领域) ,📒本文核心:用原生js实现省市区联动 【前言】今日在复习省市县三级联动的时候,有点忘了原生的js应该怎么样处理省市县的联动,特此写下来再次复习下 1.获取相对应的DOM对象 2.写省市县接口获取到接口信息 3.写下change事件,有变化时调

    2023年04月24日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包