uniapp 打包执行命令npx @dcloudio/uvm@latest后,在ios上map的api--getCenterLocation getRegion等api返回都是{}拿不到经纬度
uniapp 打包执行命令npx @dcloudio/uvm@latest后,在ios上map的api–getCenterLocation getRegion等api返回都是{}拿不到经纬度
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | macOS Sonoma 14.4 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
HBuilderX版本号:4.24
手机系统:iOS
手机系统版本号:iOS 18
手机厂商:苹果
手机机型:15
页面类型:vue
vue版本:vue3
打包方式:云端
项目创建方式:HBuilderX
操作步骤:
onReady(() => {
setTimeout(() => {
mapContext.value = uni.createMapContext('myMap', instance);
console.log(mapContext.value)
setTimeout(() => {
mapContext.value.getCenterLocation({
success: (locationRes) => {
console.log('中心点')
console.log(locationRes)
}
})
},1000)
setTimeout(() => {
mapContext.value.getRegion({
success: (regionRes) => {
console.log('范围regionRes')
console.log(regionRes)
}
})
},1000)
}, 500);
预期结果:
onReady(() => {
setTimeout(() => {
mapContext.value = uni.createMapContext('myMap', instance);
console.log(mapContext.value)
setTimeout(() => {
mapContext.value.getCenterLocation({
success: (locationRes) => {
console.log('中心点')
console.log(locationRes)
}
})
},1000)
setTimeout(() => {
mapContext.value.getRegion({
success: (regionRes) => {
console.log('范围regionRes')
console.log(regionRes)
}
})
},1000)
}, 500);
实际结果:
onReady(() => {
setTimeout(() => {
mapContext.value = uni.createMapContext('myMap', instance);
console.log(mapContext.value)
setTimeout(() => {
mapContext.value.getCenterLocation({
success: (locationRes) => {
console.log('中心点')
console.log(locationRes)
}
})
},1000)
setTimeout(() => {
mapContext.value.getRegion({
success: (regionRes) => {
console.log('范围regionRes')
console.log(regionRes)
}
})
},1000)
}, 500);
2 回复
我解决了
这个问题通常是由于iOS平台地图组件初始化延迟导致的。建议尝试以下解决方案:
- 确保地图组件完全加载后再调用API:
onReady(() => {
mapContext.value = uni.createMapContext('myMap', instance);
// 增加更长的延迟时间
setTimeout(() => {
mapContext.value.getCenterLocation({
success: (res) => {
console.log('中心点:', res)
},
fail: (err) => {
console.error('获取中心点失败:', err)
}
})
}, 2000) // 增加到2秒延迟
})
- 检查manifest.json中是否配置了地图权限:
"ios": {
"permissions": {
"maps": true
}
}