【javaScript随笔】05 高德地图简单实现省市区三级联动

一、准备素材

  • 高德地图key值
  • vue.js (非必要)

二、实现

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
    <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.8&key=key"></script>
</head>
<body>
    <div id="app">
        <select @change="provinceChange">
            <option v-for="province in provinceList">{{province}}</option>
        </select>
        <select @change="cityChange">
            <option v-for="city in cityList">{{city}}</option>
        </select>
        <select @change="districtChange">
            <option v-for="district in districtList">{{district}}</option>
        </select>
        <select>
            <option v-for="street in streetList">{{street}}</option>
        </select>
    </div>
</body>
<script type="text/javascript">
    new Vue({
        el: "#app",
        data: {
            districtSearch: '',
            provinceList: [],
            cityList: [],
            districtList: [],
            streetList: []
        },
        mounted: function () {
            this.init();
        },
        methods: {
            init: function () {
                var _this = this;
                AMap.plugin('AMap.DistrictSearch', function () {
                    _this.districtSearch = new AMap.DistrictSearch({
                        level: 'country',
                        subdistrict: 1
                    })
                });
                this.districtSearch.search('中国', function (status, result) {
                    var list = result.districtList[0]['districtList'];
                    for (var i = 0; i < list.length; i++) {
                        _this.provinceList.push(list[i].name);
                    }
                })
            },
            provinceChange: function (e) {
                var _this = this;
                var provinceName = e.target.value;
                this.cityList = [];
                this.districtSearch.search(provinceName, function (status, result) {
                    var list = result.districtList[0]['districtList'];
                    for (var i = 0; i < list.length; i++) {
                        _this.cityList.push(list[i].name);
                    }
                })
            },
            cityChange: function (e) {
                var _this = this;
                var cityName = e.target.value;
                this.districtList = [];
                this.districtSearch.search(cityName, function (status, result) {
                    var list = result.districtList[0]['districtList'];
                    for (var i = 0; i < list.length; i++) {
                        _this.districtList.push(list[i].name);
                    }
                })
            },
            districtChange: function(e) {
                var _this = this;
                var districtName = e.target.value;
                this.streetList = [];
                this.districtSearch.search(districtName, function (status, result) {
                    var list = result.districtList[0]['districtList'];
                    for (var i = 0; i < list.length; i++) {
                        _this.streetList.push(list[i].name);
                        console.log(list[i]);
                    }
                })
            }
        }
    })
</script>

</html>

三、页面效果

这里写图片描述

四、gitHub地址

https://github.com/fwx426328/AMap.git

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三和小钢炮

谢谢客官~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值