uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition 获取不到 addresses

uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition 获取不到 addresses

3 回复

用前一版本 3.2.16.20211122 这里是正常的

更多关于uni-app 更新3.3后调用 plus.geolocation.getCurrentPosition 获取不到 addresses的实战教程也可以访问 https://www.itying.com/category-93-b0.html


操作步骤: 1、hbuilderx 更新到 3.3.5.20211229; 2、5+项目调 plus.geolocation.watchPosition
预期结果: {“coordsType”:“gcj02”,“address”:{“country”:“中国”,“province”:“北京市”,“city”:“北京市”,“district”:“朝阳区”,“street”:“朝外南街”,“streetNum”:“22号”,“poiName”:"《财经》杂志",“cityCode”:“010”},“addresses”:“北京市朝阳区朝外南街22号”,“coords”:{“latitude”:39.922613,“longitude”:116.439224,“accuracy”:36,“altitude”:0,“heading”:null,“speed”:0,“altitudeAccuracy”:0},“timestamp”:1641882328483}
实际结果: {“coordsType”:“wgs84”,“coords”:{“latitude”:39.922322,“longitude”:116.433049,“accuracy”:112.787048,“altitude”:0,“heading”:null,“speed”:0,“altitudeAccuracy”:0},“timestamp”:null}
bug描述: 更新到 3.3.5.20211229; 5+项目调 plus.geolocation.watchPosition 获取不到 addresses (String 完整地址描述信息);

在 uni-app 3.3 版本中,plus.geolocation.getCurrentPosition 获取不到 addresses 的问题,通常是由于权限配置或 API 调用方式调整导致的。以下是排查和解决步骤:

  1. 检查 manifest.json 配置
    确保在 manifest.jsonApp模块配置 中勾选了 Geolocation(定位) 模块,并正确配置了高德或百度等地图 SDK 的 AppKey(国内常用高德)。

    {
      "modules": {
        "Geolocation": {}
      },
      "distribute": {
        "sdkConfigs": {
          "geolocation": {
            "amap": {
              "appkey_ios": "你的iOS高德Key",
              "appkey_android": "你的Android高德Key"
            }
          }
        }
      }
    }
    
  2. 确认权限声明

    • iOS:在 manifest.jsonApp权限配置 中填写 NSLocationWhenInUseUsageDescription(使用期间定位权限说明)。
    • Android:确保已自动添加定位权限,无需手动配置。
  3. 代码调用调整
    uni-app 3.3 可能强化了异步处理,建议在调用时增加错误捕获,并确认返回结构:

    plus.geolocation.getCurrentPosition(
      (position) => {
        console.log('定位数据:', position); // 检查是否有 addresses 字段
        console.log('详细地址:', position.addresses); // 如无数据,可能需单独调用逆地理编码
      },
      (error) => {
        console.error('定位失败:', error.message);
      },
      { provider: 'amap', enableHighAccuracy: true } // 指定高德地图提供方
    );
    
  4. 使用逆地理编码补全地址
    如果 addresses 仍为空,可能是网络或服务限制,可尝试调用高德逆地理编码 API 手动获取地址:

    // 通过经纬度调用高德逆地理编码服务(需自行封装请求)
    // 示例:https://restapi.amap.com/v3/geocode/regeo?key=你的Key&location=经度,纬度
回到顶部