9***@qq.com
9***@qq.com
  • 发布:2024-08-04 09:25
  • 更新:2024-08-04 21:03
  • 阅读:115

【报Bug】uni.startLocationUpdate+ uni.onLocationChange 已开始 但获取不到实时定位

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.24

手机系统: Android

手机系统版本号: Android 14

手机厂商: 小米

手机机型: 红米note12pro

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

const dj = async () => {
const res = await getLocation()
loc.value = res
}
const lsda = ref([])
let _locationChangeFn = function(res) {

    const {  
        longitude,  
        latitude  
    } = res  
    uni.showModal({  
        title: '提示',  
        content: JSON.stringify(res),  
        success: function(Res) {  
            if (Res.confirm) {  
                console.log('用户点击确定');  
            } else if (Res.cancel) {  
                console.log('用户点击取消');  
            }  
        }  
    });  
    lsda.value.push(res)  
}  

const record = () => {  
    uni.startLocationUpdate({  
        type: 'wgt84',  
        success: (res) => {  
            uni.showModal({  
                title: '提示',  
                content: '开始定位',  
                success: function(res) {  
                    if (res.confirm) {  
                        console.log('用户点击确定');  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  

            console.log("开启定位追踪", res);  
            uni.onLocationChange(_locationChangeFn);  
        },  
        fail: (err) => {  
            uni.showModal({  
                title: '失败',  
                content: JSON.stringify(err),  
                success: function(res) {  
                    if (res.confirm) {  
                        console.log('用户点击确定');  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  
            console.log('获取当前位置失败', err);  
        }  
    })  
}

操作步骤:

const dj = async () => {
const res = await getLocation()
loc.value = res
}
const lsda = ref([])
let _locationChangeFn = function(res) {

    const {  
        longitude,  
        latitude  
    } = res  
    uni.showModal({  
        title: '提示',  
        content: JSON.stringify(res),  
        success: function(Res) {  
            if (Res.confirm) {  
                console.log('用户点击确定');  
            } else if (Res.cancel) {  
                console.log('用户点击取消');  
            }  
        }  
    });  
    lsda.value.push(res)  
}  

const record = () => {  
    uni.startLocationUpdate({  
        type: 'wgt84',  
        success: (res) => {  
            uni.showModal({  
                title: '提示',  
                content: '开始定位',  
                success: function(res) {  
                    if (res.confirm) {  
                        console.log('用户点击确定');  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  

            console.log("开启定位追踪", res);  
            uni.onLocationChange(_locationChangeFn);  
        },  
        fail: (err) => {  
            uni.showModal({  
                title: '失败',  
                content: JSON.stringify(err),  
                success: function(res) {  
                    if (res.confirm) {  
                        console.log('用户点击确定');  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  
            console.log('获取当前位置失败', err);  
        }  
    })  
}

预期结果:

const dj = async () => {
const res = await getLocation()
loc.value = res
}
const lsda = ref([])
let _locationChangeFn = function(res) {

    const {  
        longitude,  
        latitude  
    } = res  
    uni.showModal({  
        title: '提示',  
        content: JSON.stringify(res),  
        success: function(Res) {  
            if (Res.confirm) {  
                console.log('用户点击确定');  
            } else if (Res.cancel) {  
                console.log('用户点击取消');  
            }  
        }  
    });  
    lsda.value.push(res)  
}  

const record = () => {  
    uni.startLocationUpdate({  
        type: 'wgt84',  
        success: (res) => {  
            uni.showModal({  
                title: '提示',  
                content: '开始定位',  
                success: function(res) {  
                    if (res.confirm) {  
                        console.log('用户点击确定');  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  

            console.log("开启定位追踪", res);  
            uni.onLocationChange(_locationChangeFn);  
        },  
        fail: (err) => {  
            uni.showModal({  
                title: '失败',  
                content: JSON.stringify(err),  
                success: function(res) {  
                    if (res.confirm) {  
                        console.log('用户点击确定');  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  
            console.log('获取当前位置失败', err);  
        }  
    })  
}

实际结果:

const dj = async () => {
const res = await getLocation()
loc.value = res
}
const lsda = ref([])
let _locationChangeFn = function(res) {

    const {  
        longitude,  
        latitude  
    } = res  
    获取不到 res  
    lsda.value.push(res)  
}  

const record = () => {  
    uni.startLocationUpdate({  
        type: 'wgt84',  
        success: (res) => {  
            uni.showModal({  
                title: '提示',  
                content: '开始定位',  
                success: function(res) {  
                    if (res.confirm) {  
                        console.log('用户点击确定');  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  

            console.log("开启定位追踪", res);  
            uni.onLocationChange(_locationChangeFn);  
        },  
        fail: (err) => {  
            uni.showModal({  
                title: '失败',  
                content: JSON.stringify(err),  
                success: function(res) {  
                    if (res.confirm) {  
                        console.log('用户点击确定');  
                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            });  
            console.log('获取当前位置失败', err);  
        }  
    })  
}

bug描述:

uni.startLocationUpdate+ uni.onLocationChange 已开始 但获取不到实时定位 使用离线版本为4.24 uni.getLocation是可以获取到定位的 实时获取的不行 坐标使用为 wgt84

2024-08-04 09:25 负责人:无 分享
已邀请:
9***@qq.com

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

手机也提示开始获取但 uni.onLocationChange 没反应 android里面高德的key也换成了app的也没反应

9***@qq.com

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

高德的key注册的时候注册错了 还有个问题就是 implementation('com.amap.api:location:xxx') xxx是版本号 版本号通过离线SDK中的demo获取相对应版本 demo里面没有使用implementation('com.amap.api:location:xxx') 使用的是implementation 'com.amap.api:3dmap:9.5.0' 这个 那 implementation('com.amap.api:location:xxx')的版本号从哪里看勒?

要回复问题请先登录注册