1***@qq.com
1***@qq.com
  • 发布:2022-02-17 08:43
  • 更新:2024-01-29 13:55
  • 阅读:1553

【报Bug】uni.getLocation在iOS上定位异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS Monterey

HBuilderX类型: 正式

HBuilderX版本号: 3.3.11

手机系统: iOS

手机系统版本号: iOS 12.4

手机厂商: 苹果

手机机型: iphone 6 plus

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:
 var that = this;  
                var cllocationManger = plus.ios.import("CLLocationManager");  
                var enable = cllocationManger.locationServicesEnabled();  
                var status = cllocationManger.authorizationStatus();  
                if (enable && status != 2) {  
                    uni.showModal({  
                        title: '提示',  
                        content: '手机系统的定位已经打开',  
                        success: function (res) {  
                            if (res.confirm) {  
                                console.log('用户点击确定');  
                                uni.getLocation({  
                                    type: "gcj02",  
                                    geocode: true,  
                                    altitude: true,  
                                    success(res) {  
                                        console.log("success---------1");  
                                        uni.showModal({  
                                            title: '获取定位成功',  
                                            content: JSON.stringify(res),  
                                            success: function (res) {  
                                                if (res.confirm) {  
                                                    console.log('用户点击确定');  
                                                } else if (res.cancel) {  
                                                    console.log('用户点击取消');  
                                                }  
                                            }  
                                        });  
                                    },  
                                    fail(err) {  
                                        uni.showModal({  
                                            title: '获取定位失败',  
                                            content: JSON.stringify(err),  
                                            success: function (res) {  
                                                if (res.confirm) {  
                                                    console.log('用户点击确定');  
                                                } else if (res.cancel) {  
                                                    console.log('用户点击取消');  
                                                }  
                                            }  
                                        });  
                                    }  
                                })  
                            } else if (res.cancel) {  
                                console.log('用户点击取消');  
                            }  
                        }  
                    });  
                } else {  
                    console.log("手机系统的定位没有打开");  
                }

操作步骤:
var that = this;  
                var cllocationManger = plus.ios.import("CLLocationManager");  
                var enable = cllocationManger.locationServicesEnabled();  
                var status = cllocationManger.authorizationStatus();  
                if (enable && status != 2) {  
                    uni.showModal({  
                        title: '提示',  
                        content: '手机系统的定位已经打开',  
                        success: function (res) {  
                            if (res.confirm) {  
                                console.log('用户点击确定');  
                                uni.getLocation({  
                                    type: "gcj02",  
                                    geocode: true,  
                                    altitude: true,  
                                    success(res) {  
                                        console.log("success---------1");  
                                        uni.showModal({  
                                            title: '获取定位成功',  
                                            content: JSON.stringify(res),  
                                            success: function (res) {  
                                                if (res.confirm) {  
                                                    console.log('用户点击确定');  
                                                } else if (res.cancel) {  
                                                    console.log('用户点击取消');  
                                                }  
                                            }  
                                        });  
                                    },  
                                    fail(err) {  
                                        uni.showModal({  
                                            title: '获取定位失败',  
                                            content: JSON.stringify(err),  
                                            success: function (res) {  
                                                if (res.confirm) {  
                                                    console.log('用户点击确定');  
                                                } else if (res.cancel) {  
                                                    console.log('用户点击取消');  
                                                }  
                                            }  
                                        });  
                                    }  
                                })  
                            } else if (res.cancel) {  
                                console.log('用户点击取消');  
                            }  
                        }  
                    });  
                } else {  
                    console.log("手机系统的定位没有打开");  
                }

预期结果:

在iOS真机和模拟器 定位功能正常使用

实际结果:

在iOS真机和模拟器 定位功能不正常,错误提示:{"errMsg":"getLocation:fail Error Domain=PGLocation Code=2 \"不能获取到位置\" UserInfo={NSLocalizedDescription=不能获取到位置},https://ask.dcloud.net.cn/article/282","errCode":-1502,"code":-1502}

bug描述:

在iOS真机和模拟器中,uni.getLocation始终获取不到位置
错误提示为:“{"errMsg":"getLocation:fail Error Domain=PGLocation Code=2 \"不能获取到位置\" UserInfo={NSLocalizedDescription=不能获取到位置},https://ask.dcloud.net.cn/article/282","errCode":-1502,"code":-1502}”
源码如下:

var that = this;  
                var cllocationManger = plus.ios.import("CLLocationManager");  
                var enable = cllocationManger.locationServicesEnabled();  
                var status = cllocationManger.authorizationStatus();  
                if (enable && status != 2) {  
                    uni.showModal({  
                        title: '提示',  
                        content: '手机系统的定位已经打开',  
                        success: function (res) {  
                            if (res.confirm) {  
                                console.log('用户点击确定');  
                                uni.getLocation({  
                                    type: "gcj02",  
                                    geocode: true,  
                                    altitude: true,  
                                    success(res) {  
                                        console.log("success---------1");  
                                        uni.showModal({  
                                            title: '获取定位成功',  
                                            content: JSON.stringify(res),  
                                            success: function (res) {  
                                                if (res.confirm) {  
                                                    console.log('用户点击确定');  
                                                } else if (res.cancel) {  
                                                    console.log('用户点击取消');  
                                                }  
                                            }  
                                        });  
                                    },  
                                    fail(err) {  
                                        uni.showModal({  
                                            title: '获取定位失败',  
                                            content: JSON.stringify(err),  
                                            success: function (res) {  
                                                if (res.confirm) {  
                                                    console.log('用户点击确定');  
                                                } else if (res.cancel) {  
                                                    console.log('用户点击取消');  
                                                }  
                                            }  
                                        });  
                                    }  
                                })  
                            } else if (res.cancel) {  
                                console.log('用户点击取消');  
                            }  
                        }  
                    });  
                } else {  
                    console.log("手机系统的定位没有打开");  
                }
2022-02-17 08:43 负责人:DCloud_iOS_XHY 分享
已邀请:
BoredApe

BoredApe - 有问题就会有答案。

请在Hello Uni-app中测试是否正常,最好能上传一个能重现问题的测试工程

  • 1***@qq.com (作者)

    换下bundle id 和 amapkey

    2022-02-17 11:34

1***@qq.com

1***@qq.com (作者)

在Hello Uni-app中测试不正常,可运行demo

1***@qq.com

1***@qq.com (作者)

用的SDK-iOS@3.3.10-20220125,SDK3个多G就不发了

DCloud_iOS_XHY

DCloud_iOS_XHY

  • 雨夜敬清秋

    最新版的hbx,标准基座,ios模拟器也无法获取位置,hello-uniapp项目也有问题

    2023-05-17 08:31

1***@qq.com

1***@qq.com

顶一下,解决了吗

要回复问题请先登录注册