小程序 --- 收货地址 --- 定位功能

一、整体功能如下图

二、功能点

  • 定位选择自己的位置

  • 手动选择省市县后输入详细地址关键词搜索地址,然后进行选择

三、如何实现

  • 定位

  • 根据地址解析出省市县以及详细地址及经纬度

  • 代码实现

chooseLocation(){
        const that = this;
        wx.chooseLocation({
            success:function(res) {
               const address = res.address;
               let regex =  /.+?(省|市|自治区|自治州|县|区)/g;
               const arr = address.match(regex);
               const provinces = arr[0]; //省
               const citys = arr[1]; //市
               const districts = arr[2]; //县
               //除了省市县剩下的地址
               const remain = address.replace(`${provinces}${citys}${districts}`,'');
               //addressData为对象,已在data定义,用于存储省市县及详细地址
               that.addressData.province = provinces; //用于页面展示的省
               that.addressData.city = citys; //用于页面展示的市
               that.addressData.district = districts;//用于页面展示的县
               that.addressData.detail = `${remain}${res.name}`; //用于页面展示的详细地址
               that.latitude = res.latitude;  // 维度
               that.longitude = res.longitude;  //经度
            },
            fail:function(res) {
                console.log(res);
            },
            complete:function(ree) {
                console.log(ree);
                
            }
        })
        
    }
  • 根据输入关键词查询并选择地理位置

  • 步骤如下

  • 开通webserviceAPI服务:控制台 ->应用管理 -> 我的应用 ->添加key-> 勾选WebServiceAPI -> 保存

  • 按照步骤操作后具体代码实现如下

    var QQMapWX = require('../../static/qqmap-wx-jssdk.js'); //引入SDK文件
    onLoad() {
        this.qqmapsdk = new QQMapWX({  key: '****你申请得key*****'});
    }
  // isShowDetailAddress 是否展示下拉地址选择框
  // showClearIcon 是否展示清空按钮
  // searchAddressDatas 查询到得地址数组
  // addressData 存储当前页面展示的省市县详细地址
    searchAddress(val) {
        const that = this;
        if(!val.detail.value) {
            that.isShowDetailAddress = false //
            this.showClearIcon  = false;
            that.searchAddressDatas = [];d
            return;
        }
        this.showClearIcon = true;
        //将省市县详细地址进行拼接作为关键词进行地址查询
        const value = `${this.addressData.province}${this.addressData.city}${this.addressData.district}${val.detail.value}` ;
        this.qqmapsdk.search({
           keyword: value,
           success: function (res) {
               that.isShowDetailAddress = res.data.length >0;
               that.searchAddressDatas = res.data;
           },
           fail: function (res) {
               console.log(res);
           },
           complete: function (res) {
               console.log(res);
           },
           });
},

欢迎各位大佬的建议和纠正

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值