省市县选择三级联动(使用高德API实现)

省市县选择如果自己实现是比较麻烦的,最近发现可以使用高德实现省市县联动选择,实现后来记录一下供大家参考。

最终效果:

实现单次点击获取省市县名称,选择完成后返回获取省市县数组
在这里插入图片描述

一、准备工作

高德API平台申请自己的key,申请的类型为Web服务
在这里插入图片描述

二、完整页面代码

主要实现在于 通过发送高德api请求:
https://restapi.amap.com/v3/config/district?keywords=&subdistrict=3&extensions=base&key=你的key
获取到所有的省市县数据
通过代码处理后,放到Element UI的级联选择组件中

<template>
  <div>
    <!-- 引入Element UI Cascader组件 -->
    <el-cascader
      filterable
      placeholder="请选择"
      ref="addPoint"
      :props="cityProps"
      :options="cityOptions"
      clearable
      @active-item-change="handleActiveItemChange"
      @change="handleChange"
      v-model="selectedOptions"
    ></el-cascader>
  </div>
</template>

<script>
  import axios from 'axios';

  export default {
    data() {
      return {
        selectedArea: [],
        provinceList: [],
        CITY: [],
        XIAN: [],

        /*获取数据的url key需要自己到高德地图申请*/
        url: 'https://restapi.amap.com/v3/config/district?keywords=&subdistrict=3&extensions=base&key=自己的key',
        /*选项列表*/
        cityOptions: [],
        /*选项列表格式*/
        cityProps: {
          value: 'name',
          label: 'name',
          children: 'districts',
        },
        selectedOptions: null, //选中的数据
      };
    },
    methods: {

      /* 获取省市区选项 */
      getCity() {
        axios.get(this.url, null).then((res) => {
          console.log(res)
          this.cityOptions = this.getTreeData(
            res.data.districts[0].districts
          )
        })
      },
      /* 递归处理末尾项district为0的空项 */
      getTreeData(data) {
        // 循环遍历返回的数据
        for (var i = 0; i < data.length; i++) {
          if (data[i].districts.length < 1) {
            // districts若为空数组,则将districts设为undefined
            data[i].districts = undefined
          } else {
            // districts若不为空数组,则继续 递归调用 本方法
            this.getTreeData(data[i].districts)
          }
        }
        return data
      },

      handleActiveItemChange(seleted){
        console.log(seleted,"handleActiveItemChange-----")
      },

      handleChange(seleted){
        console.log(seleted,"handleChange-----")
      }
    },
    created() {
      this.getCity();
    },
  };
</script>

相关推荐

  1. mysql全国三级联动创表sql(一)

    2024-06-13 19:52:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 19:52:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 19:52:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 19:52:01       82 阅读
  4. Python语言-面向对象

    2024-06-13 19:52:01       91 阅读

热门阅读

  1. C++中变量的使用细节和命名方案

    2024-06-13 19:52:01       31 阅读
  2. MYSQL(事务)

    2024-06-13 19:52:01       23 阅读
  3. 国产数据库助力数字中国建设高质量发展

    2024-06-13 19:52:01       31 阅读
  4. 量产导入 | SCAN和ATPG

    2024-06-13 19:52:01       37 阅读
  5. 函数用于将字符串反转以及函数的作用

    2024-06-13 19:52:01       26 阅读
  6. Chrome DevTools开发者调试工具

    2024-06-13 19:52:01       29 阅读
  7. 从零制作一个ubuntu的docker镜像

    2024-06-13 19:52:01       31 阅读
  8. 在 Ubuntu 上取消登录密码和锁屏功能的简易指南

    2024-06-13 19:52:01       37 阅读
  9. MySQL(2)

    2024-06-13 19:52:01       22 阅读
  10. AForge.NET介绍

    2024-06-13 19:52:01       25 阅读