微信小程序地址选择wx.chooseLocation

文章展示了如何在微信小程序中使用wx.chooseLocationAPI获取用户位置,并结合授权管理实现地图选点功能。同时,文章提到了一个名为susu-mini-tem的组件库,包含各种常见组件如轮播、canvas、地图和Echarts图表等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.实现效果

在这里插入图片描述

 

2.实现原理

wx.chooseLocation(Object object) | 微信开放文档

 在这里插入图片描述

3.完整代码

susu-mini-tem: 微信小程序封装组件,覆盖常用需求:包括轮播组件(堆叠轮播等)、canvas(圆环、海报、裁图,绘画等)、map、echarts各类图表、css3动画,步骤条、日历组件、自定义tabbar+导航栏、loading加载动画、css渐变、雪碧图、瀑布流、关键词高亮、搜索历史、图片懒加载、节流防抖、索引选择(如城市)、微信拆红包、红包雨、菜单弹出动画、3d云、按钮拖拽、营销组件(九宫格等)

4.部分代码

 

// pages/choseAddress/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    add:true,
    addressName:'',
    addressDetail:'',
    params:{
      detail:"",
      phone:"",
      contact:"",
    },
    can_click:false,//默认不可点击
  },
  setInput(e){
    let {type}=e.currentTarget.dataset,val = e.detail.value;
    let k = `params.${type}`
    this.setData({
      [k]: val,
    })
    this.inputClick()
  },
  inputClick(){
    let params = this.data.params,status=true,
    {addressName,addressDetail}=this.data;
    if (addressName == '') {
      status = false;
    }
    if (addressDetail == '') {
      status = false;
    }
    if (params.detail == '') {
      status = false;
    }

    if (params.phone == '') {
      status = false;
    }

    if (params.contact == '') {
      status = false;
    }
    this.setData({
      can_click:status
    })
  },

 
  onLoad: function (options) {

  },

 
  onShow: function () {

  },
   //获取用户定位授权,地图选点
   getLocation: function () {
    wx.getSetting({
      success:res=>{
        if(!res.authSetting['scope.userLocation']){
          wx.authorize({ 
            scope: 'scope.userLocation', 
            success:res=>{

            },fail:res=>{
              wx.showModal({
                title: '提示',
                content: '系统需要获取该您当前的定位,请确保您的位置授权已开启',
                showCancel: false,
                success: res=>{
                  if (res.confirm) {
                    wx.openSetting({
    
                    })
                  }
                }
              })
            }
          });
        }
        wx.chooseLocation({ 
          success: res=>{
            console.log(res)
            if(res.address!='' && res.name!=''){
              this.setData({
                addressName: res.name,
                addressDetail: res.address,
                add:false
              })
              this.inputClick()
            }
          }
        })
      }
    })

   },
   //获取微信收货地址
   chooseAddress(){
    // scope.address 通讯地址(已取消授权,可以直接调用对应接口)
    wx.chooseAddress({
      success: (res) => {
        console.log(res)
        this.setData({
          addressName: res.detailInfo,
          addressDetail: res.provinceName+res.cityName+res.countyName,
          'params.contact': res.userName,
          'params.phone': res.telNumber,
          'params.detail':res.detailInfo,
          add: false
        })
        this.inputClick()
      },
    })
  },
  subAddress(){
    let params = this.data.params,  {addressName,addressDetail}=this.data;
    let tmp = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
    if(params.phone!=''){
      if (!tmp.test(params.phone)) {
        return wx.showToast({
          title: '请输入正确的手机号',
          icon: 'none',
          duration: 2000,
          mask: true
        });
      }
    }else{
      wx.showToast({
        title: '请输入手机号',
        icon:'none'
      })
    }
    if (addressName == '' || addressDetail == ''){
      wx.showToast({
        title: '请选择收货地址',
        icon:'none'
      })
      return false;
    }
    if (params.detail == '' ){
      wx.showToast({
        title: '请输入详细地址',
        icon:'none'
      })
      return false;
    }
    if (params.contact == '' ){
      wx.showToast({
        title: '请输入联系人',
        icon:'none'
      })
      return false;
    }
    let subParams=params;
    subParams.addressName=addressName;
    subParams.addressDetail=addressDetail
  }
})

 

### 微信小程序 `wx.chooseLocation` 接口使用指南 #### 功能概述 `wx.chooseLocation` 是微信小程序中的一个API,用于打开地图选择位置。通过该接口,用户能够在地图界面上选取特定的位置,并返回所选位置的相关信息。 #### 参数说明 - **success**: 成功回调函数,在用户完成位置选择后触发,参数为对象形式,包含如下属性: - latitude (Number): 所选地点纬度。 - longitude (Number): 经度。 - name (String): 地址名称。 - address (String): 地址详情描述。 - **fail**: 失败回调函数,当操作未能正常结束时执行。 - **complete**: 完成后的回调函数(无论成功与否都会被调用)[^1]。 #### 实际应用案例 下面是一个简单的例子来展示如何利用 `wx.chooseLocation` 来让用户挑选并显示他们感兴趣的地方: ```javascript // 在页面加载或其他适当事件处理程序内调用此方法 chooseUserSelectedPlace() { wx.chooseLocation({ success: function(res){ const locationInfo = res; console.log(`选择了新位置:${locationInfo.name}, ${locationInfo.address}`); // 这里可以根据实际业务逻辑进一步处理获得的数据, // 比如更新UI界面或者保存到数据库等 }, fail: function(err){ console.error('选择位置失败:', err); } }); } ``` 上述代码片段展示了怎样引导用户从地图上选定一处具体位置,并打印出其基本信息至控制台。这有助于理解整个流程以及可能遇到的情况。 #### 集成腾讯位置服务增强体验 为了提供更丰富的地理信息服务给最终用户,建议考虑集成由腾讯提供的JavaScript SDK。它不仅简化了诸如地址解析这样的复杂任务,还允许开发者轻松实现更多高级特性,比如路线规划、周边搜索等等[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嫣嫣细语

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值