uni-app 离线打包时按文档配置高德地图依赖库 部分机型提示定位异常

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 离线打包时按文档配置高德地图依赖库 部分机型提示定位异常

示例代码:

异常:implementation 'com.amap.api:3dmap:9.5.0'
implementation 'com.amap.api:search:9.4.5'
正常:implementation 'com.amap.api:navi-3dmap-location-search:10.0.700_3dmap10.0.700_loc6.4.5_sea9.7.2'

操作步骤:

使用implementation 'com.amap.api:3dmap:9.5.0'
implementation 'com.amap.api:search:9.4.5'  依赖离线打包
uni.getLocation返回定位数据

预期结果:

uni.getLocation返回正常定位数据

实际结果:

uni.getLocation返回定位异常

bug描述:

按照文档配置了高德map和search离线包依赖,以及geolocation-amap-release.aar,目前在华为,一加等机型上发现获取定位,uni.getLocation返回定位异常,联系高德人员,更换集成依赖库后正常,

有问题的依赖
implementation ‘com.amap.api:3dmap:9.5.0’
implementation ‘com.amap.api:search:9.4.5’

目前依赖
implementation ‘com.amap.api:navi-3dmap-location-search:10.0.700_3dmap10.0.700_loc6.4.5_sea9.7.2’


2 回复

官方排查一下吧


在处理uni-app离线打包时集成高德地图SDK并遇到部分机型定位异常的问题时,首先需要确保高德地图SDK的集成步骤正确无误,并针对不同机型进行兼容性检查和调整。以下是一个基本的集成流程和可能的代码示例,以及针对定位异常的一些调试思路。

高德地图SDK集成步骤

  1. 引入SDK

    确保在manifest.json文件中正确配置了高德地图的依赖库。例如:

    "mp-weixin": {
      "appid": "your-app-id",
      "setting": {
        "urlCheck": false
      },
      "usingComponents": true,
      "permission": {
        "scope.userLocation": {
          "desc": "你的位置信息将用于小程序位置接口的效果展示"
        }
      }
    },
    "app-plus": {
      "distribute": {
        "sdkConfigs": [
          {
            "name": "amap-wx",
            "version": "latest"
          }
        ]
      }
    }
    

    注意:这里的配置示例是针对小程序的,离线打包可能需要在原生平台(如Android、iOS)的配置文件中添加相应的SDK引用。

  2. Android配置

    AndroidManifest.xml中添加必要的权限和API Key:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <meta-data
        android:name="com.amap.api.v2.apikey"
        android:value="your-amap-api-key"/>
    
  3. iOS配置

    Info.plist中添加必要的权限描述和API Key:

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>需要您的位置信息以提供定位服务</string>
    <key>AMapServicesKey</key>
    <string>your-amap-api-key</string>
    

定位异常调试

定位异常可能由多种原因引起,包括但不限于权限未授予、SDK版本不兼容、设备硬件问题等。以下是一些调试思路:

  • 检查权限:确保应用已获取定位权限。

    if (uni.getSystemInfoSync().platform === 'android') {
      uni.authorize({
        scope: 'scope.userLocation',
        success() {
          // 已授权
          initMap();
        },
        fail() {
          // 未授权
          uni.showToast({
            title: '请授权位置信息',
            icon: 'none'
          });
        }
      });
    } else {
      initMap();
    }
    
  • 异常捕获:在调用定位功能时添加try-catch块,捕获并处理异常。

  • 日志记录:在关键位置添加日志记录,帮助定位问题所在。

  • 设备兼容性测试:在不同机型上进行测试,确保兼容性。

通过上述步骤和代码示例,结合详细的日志信息,可以逐步排查并解决定位异常的问题。

回到顶部