uniapp ui.chooselocation 高德地图poi没行政区怎么解决

在使用uniapp的ui.chooselocation组件调用高德地图时,发现返回的POI信息缺少行政区划数据(比如省市区信息),只有街道和名称。请问如何获取完整的行政区划信息?是否有参数需要额外配置,或者需要改用其他接口?求解决方案。

2 回复

chooseLocation中,高德地图默认不显示行政区。可通过自定义地图组件,调用高德POI搜索API,手动添加行政区筛选条件来解决。


在UniApp中使用uni.chooseLocation时,如果高德地图返回的POI缺少行政区信息,可以通过以下方法解决:

1. 使用高德地图SDK替代

  • 集成高德地图原生SDK,通过自定义地图组件获取更详细的POI数据(包括行政区)。
  • 示例代码(需配置高德地图Key):
    // 引入高德地图SDK(需在manifest.json中配置)
    const amap = require('./amap-wx.js'); // 高德微信小程序SDK
    const map = new amap.AMapWX({
      key: '你的高德地图Key'
    });
    
    // 搜索POI并获取详细信息
    map.getPoiAround({
      success: (data) => {
        const poiList = data.pois; // 包含行政区等完整信息
        console.log(poiList);
      }
    });
    

2. 通过逆地理编码补充数据

  • 用POI的经纬度调用高德逆地理编码API,解析出行政区。
  • 示例代码:
    // 使用uni.request调用高德逆地理编码API
    uni.request({
      url: 'https://restapi.amap.com/v3/geocode/regeo',
      data: {
        key: '你的高德Key',
        location: '经度,纬度' // 从uni.chooseLocation返回的经纬度
      },
      success: (res) => {
        const addressComponent = res.data.regeocode.addressComponent;
        const district = addressComponent.district; // 获取行政区
        console.log(district);
      }
    });
    

3. 使用第三方地图插件

  • 在插件市场搜索支持行政区的地图插件(如“高德地图POI增强版”)。

注意事项:

  • 高德Key申请:需在高德开放平台注册并配置小程序BundleID。
  • 权限配置:在manifest.json中声明地图和网络权限。

通过以上方法,可补充缺失的行政区信息。优先推荐逆地理编码方案,兼容性较好且无需复杂配置。

回到顶部