uni-app 不支持某个提供者 如腾讯地图

uni-app 不支持某个提供者 如腾讯地图

项目信息 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 21H1
HBuilderX类型 Alpha
HBuilderX版本号 3.3.2
手机系统 全部
手机系统版本号 iOS 13.4
手机厂商 苹果
手机机型 IphoneX
页面类型 nvue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

测试过的手机:

  • iOS IphoneX iOS 13.4
  • 华为 mate 30 HarmonyOS 2.0.0

操作步骤:

uni.getLocation({
type: 'wgs84',
provider: 'system',
success:(res)=> {
console.log(res)
},
fail(err) {
console.log(err)
});
```

### 预期结果:
正常返回经纬度信息

### 实际结果:
```json
{
"errMsg": "getLocation:fail Not Support Provider,https://ask.dcloud.net.cn/article/282",
"errCode": -1503,
"code": -1503
}
```

### bug描述:
使用 3.3.2 Alpha  
getLocation使用高德、或者系统都返回如下:  
不支持某个提供者,如:不支持腾讯地图  
```json
{
"errMsg": "getLocation:fail Not Support Provider,https://ask.dcloud.net.cn/article/282",
"errCode": -1503,
"code": -1503
}
```

### 相关链接:
- [https://ask.dcloud.net.cn/question/136642](https://ask.dcloud.net.cn/question/136642)

更多关于uni-app 不支持某个提供者 如腾讯地图的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

如果是昨天打的包,重新打个自定义基座

更多关于uni-app 不支持某个提供者 如腾讯地图的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你提供的信息,这个错误是由于 uni.getLocation 方法中指定的 provider 参数在当前运行环境中不被支持导致的。

错误码 -1503 和错误信息 "getLocation:fail Not Support Provider" 明确指出了问题所在。在 App 端(尤其是 iOS 和部分安卓系统),uni.getLocationprovider 参数可用的选项是受限制的,通常取决于手机系统以及你在 manifest.json 中的配置。

核心原因与解决方案:

  1. 检查 manifest.json 配置:这是最关键的一步。在 HBuilderX 中打开项目的 manifest.json 文件,切换到“App模块配置”选项卡。确保你已经勾选了“Maps(地图)”模块,并且在下面的子项中,至少勾选了一个地图服务提供商(例如“高德地图”或“百度地图”)。云端打包时,SDK 只会集成你已勾选的地图服务。

  2. 调整 provider 参数:在 App 端,provider 的有效值通常为:

    • 'amap':高德地图(需在 manifest 中勾选)
    • 'baidu':百度地图(需在 manifest 中勾选)
    • 'system':使用系统定位(其底层实现可能依赖于设备,在 iOS 上通常是苹果定位服务,在部分安卓机上可能依赖系统内置的 GMS 或厂商服务)。如果系统定位服务不可用,也会报此错误。

    你代码中使用的 'system' 在某些设备或系统版本上可能不可用。建议进行降级处理:优先尝试使用你已配置的第三方地图(如 'amap'),如果失败再尝试 'system'

  3. 修改代码示例

    uni.getLocation({
        type: 'wgs84',
        provider: 'amap', // 首选已配置的第三方地图
        success: (res) => {
            console.log('定位成功(高德):', res);
        },
        fail: (err) => {
            console.log('高德定位失败,尝试系统定位:', err);
            // 降级使用系统定位
            uni.getLocation({
                type: 'wgs84',
                provider: 'system',
                success: (sysRes) => {
                    console.log('定位成功(系统):', sysRes);
                },
                fail: (sysErr) => {
                    console.log('系统定位也失败:', sysErr);
                    // 最终错误处理,提示用户
                    uni.showToast({
                        title: '定位失败,请检查设置或权限',
                        icon: 'none'
                    });
                }
            });
        }
    });
回到顶部