收藏
回答

请考虑 wx.chooseLocation 返回省市区

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 wx.chooseLocation 客户端 6.5.3 2.0.0

- 需求的场景描述(希望解决的问题)

wx.chooseLocation 返回的字段中有总的address ,但是需求常常要求获取精确的省市区,而通过address 解析出来的省市区经常出现各种问题:

有一个返回地址如下: 广东省深圳丽雅查尔顿酒店(深圳市南山区高新科技园高新南四道13号)

通过正则表达式解析出来的省市区很可能如下:(当然我正则表达式写的不好也有关)

省: 广东省

市:深圳丽雅查尔顿酒店(深圳市

区:南山区

这个很难解析出          深圳市

- 希望提供的能力


将省(province) 市(city) 区(county) 和address一起返回


查到大家有相同的需求:

https://developers.weixin.qq.com/community/develop/doc/000444991b82402482e7d139e51c00?highline=wx.chooseLocation%20%E8%BF%94%E5%9B%9E

回答关注问题邀请回答
收藏

10 个回答

  • 新城
    新城
    01-12

    24年了,这个问题仍然没有改进,模拟器会有省市,输入搜索会有省市,但是拖拽没有省市,奇葩开发团队。

    01-12
    有用 3
    回复
  • 大山
    大山
    2023-08-14

    23年过去大半了,也还是没有

    2023-08-14
    有用 1
    回复 1
    • Lee
      Lee
      03-08
      兄弟 你最后咋解决了 ,引入的腾讯位置服务吗?  这个好像需要收费
      03-08
      回复
  • 哈
    2023-03-10

    现在23年了还没有

    2023-03-10
    有用 1
    回复
  • 比杨先生优雅的梦雅小姐
    比杨先生优雅的梦雅小姐
    2020-06-09

    看到17年18年19年都有这个反馈,现在20年了还是木有QAQ

    2020-06-09
    有用 1
    回复
  • Nur__🔰
    Nur__🔰
    星期日 18:10

    我暂时奇葩的方式来处理了【因为我这个小程序知识在新疆内使用的所以我只用了新疆的json】

    parseAddress(address) {
      const result = {
        province: '',
        city: '',
        district: '',
        street: '',
        address_detail: '',
        house_number: ''
      }
    
      // 从xinjiang.json读取行政区划数据
      const adminData = require('@/static/xinjiang.json')
    
      // 省级
      if (address.includes(adminData.name)) {
        result.province = adminData.name
        address = address.replace(adminData.name, '')
      }
    
      // 地级市或地区
      for (const city of adminData.children) {
        if (address.includes(city.name)) {
          result.city = city.name
          address = address.replace(city.name, '')
    
          // 县区级
          for (const district of city.children) {
            if (address.includes(district.name)) {
              result.district = district.name
              address = address.replace(district.name, '')
    
              // 乡镇街道级
              if (district.children) {
                for (const street of district.children) {
                  if (address.includes(street.name)) {
                    result.street = street.name
                    address = address.replace(street.name, '')
                    break
                  }
                }
              }
              break
            }
          }
          break
        }
      }
    
      // 剩余部分作为详细地址
      result.address_detail = address.trim()
    
      // 提取门牌号
      const numberMatch = result.address_detail.match(/(\d+号|\d+弄|\d+幢|\d+栋)/)
      if (numberMatch) {
        result.house_number = numberMatch[1]
        result.address_detail = result.address_detail.replace(numberMatch[1], '').trim()
      }
    
      return result
    }
    

    就是先得有全国的json:(当然我这个只是新疆的);

    星期日 18:10
    有用
    回复
  • 精芯电脑
    精芯电脑
    2023-12-29
    1. {name: "广州塔", latitude: 23.106371, longitude: 113.323608, address: "广东省广州市海珠区APM线,地铁3号线", province: "广东省", …}
    2. address: "广东省广州市海珠区APM线,地铁3号线"
    3. city: "广州市"
    4. district: "海珠区"
    5. latitude: 23.106371
    6. longitude: 113.323608
    7. name: "广州塔"
    8. province: "广东省"

    9. 现在已经是分开返回了,只是没有镇或街道信息。
    10. 而且address里面的地址包含了全部,需要手动去除省市区等多余信息。
    11. 其中:
    12. province=省
    13. city=市
    14. district=区



    1. {name: "深圳湾科技园丽雅查尔顿酒店", latitude: 22.535811, longitude: 113.949177, address: "广东省深圳市南山区高新科技园高新南四道13号", province: "广东省", …}
    2. address"广东省深圳市南山区高新科技园高新南四道13号"
    3. city"深圳市"
    4. district"南山区"
    5. latitude22.535811
    6. longitude113.949177
    7. name"深圳湾科技园丽雅查尔顿酒店"
    8. province"广东省"
    9. __proto__: Object


    1. 而且
    2. __proto__: Object


    2023-12-29
    有用
    回复 1
    • Lee
      Lee
      03-08
      你好 你这个是引入的腾讯位置服务返回的吗? 这个企业用的好像需要收费
      03-08
      1
      回复
  • 胡夏mei
    胡夏mei
    2020-01-13

    手动@官方

    2020-01-13
    有用
    回复
  • 张鑫
    张鑫
    2019-07-23

    腾讯地图的api可以直接返回省市区的,当然其他的地图的api也可以,现在大部分地图的api都有直接的小程序sdk,我比较喜欢高的的服务器端api,因为可以直接用小程序的定位获取坐标,然后用wx.request调用服务端api接口,这些接口提供了非常多非常全面的实用信息。可以实现目前你遇到过的用到过的所有功能了。

    2019-07-23
    有用
    回复 5
    • 一点啊
      一点啊
      2019-07-23
      通过api调用是可以解决问题,我目前也是这么做的。我提这个问题主要是想让官方改进wx.chooseLocation的返回数据,直接返回方便快捷,简单上手。省时省力,是吧O(∩_∩)O哈哈~
      2019-07-23
      回复
    • 张鑫
      张鑫
      2019-07-23回复一点啊
      哦哦,这个可以 ,官方给参数的话,那就相当方便了
      2019-07-23
      回复
    • Lee
      Lee
      03-08回复一点啊
      兄弟 引用腾讯地图的api返回省市区  企业用户是不是要收费啊
      03-08
      回复
    • Lee
      Lee
      03-08
      兄弟 引用腾讯地图的api返回省市区 企业用户是不是要收费啊
      03-08
      回复
    • 明天见
      明天见
      08-05回复Lee
      好像有免费的额度次数
      08-05
      回复
  • Hasaki
    Hasaki
    2019-07-17

    👍一楼


    广东省深圳丽雅查尔顿酒店(深圳市南山区高新科技园高新南四道13号

    这个地址可以查询解析出省市区,你不用自己写正则。

    2019-07-17
    有用
    回复 1
    • 一点啊
      一点啊
      2019-07-23
      通过api调用是可以解决问题,我目前也是这么做的。我提这个问题主要是想让官方改进wx.chooseLocation的返回数据,直接返回方便快捷,简单上手。省时省力,是吧O(∩_∩)O哈哈~
      2019-07-23
      回复
  • 鲤子
    鲤子
    2019-07-17
    可以用腾讯位置服务逆解析一下,会返回国省区等详细信息。
    2019-07-17
    有用
    回复 1
    • 一点啊
      一点啊
      2019-07-23
      通过api调用是可以解决问题,我目前也是这么做的。我提这个问题主要是想让官方改进wx.chooseLocation的返回数据,直接返回方便快捷,简单上手。省时省力,是吧O(∩_∩)O哈哈~
      2019-07-23
      回复
登录 后发表内容