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.getLocation 方法中指定的 provider 参数在当前运行环境中不被支持导致的。
错误码 -1503 和错误信息 "getLocation:fail Not Support Provider" 明确指出了问题所在。在 App 端(尤其是 iOS 和部分安卓系统),uni.getLocation 的 provider 参数可用的选项是受限制的,通常取决于手机系统以及你在 manifest.json 中的配置。
核心原因与解决方案:
-
检查 manifest.json 配置:这是最关键的一步。在 HBuilderX 中打开项目的
manifest.json文件,切换到“App模块配置”选项卡。确保你已经勾选了“Maps(地图)”模块,并且在下面的子项中,至少勾选了一个地图服务提供商(例如“高德地图”或“百度地图”)。云端打包时,SDK 只会集成你已勾选的地图服务。 -
调整
provider参数:在 App 端,provider的有效值通常为:'amap':高德地图(需在 manifest 中勾选)'baidu':百度地图(需在 manifest 中勾选)'system':使用系统定位(其底层实现可能依赖于设备,在 iOS 上通常是苹果定位服务,在部分安卓机上可能依赖系统内置的 GMS 或厂商服务)。如果系统定位服务不可用,也会报此错误。
你代码中使用的
'system'在某些设备或系统版本上可能不可用。建议进行降级处理:优先尝试使用你已配置的第三方地图(如'amap'),如果失败再尝试'system'。 -
修改代码示例:
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' }); } }); } });

