实现的功能是上传图片并获得图片的经纬度和地址,调用的是高德的api,在web页面上一切正常;
一旦运行到指定基座和打包成app就会卡在获取经纬度和地址上导致一直加载。。。
这是我写的uploadFile方法。
uni.chooseImage({
sizeType: ['original'],
success: (chooseImageRes) => {
let _type = chooseImageRes.tempFiles[0].type;//识别图片类型
const tempFilePaths = chooseImageRes.tempFilePaths;
const FilePaths = chooseImageRes.tempFilePaths[0];
uni.showLoading({
title: '正在分析图片数据',
mask:true,
});
uni.uploadFile({
// url: 'http://127.0.0.1:5000//imgUp',//本地接口地址
url: setting.url+'/imgelifyan',
filePath: tempFilePaths[0],
name: 'file' ,
formData: {
},
success(res) {
if(res.data=='0'){
console.log("不是麦穗",res)
uni.showToast({
title: '图片不是麦穗',
icon:'error',
duration:850
});
uni.hideLoading()
}else{
_this.upImgState=1
console.log("是麦穗",res)
_this.imgaddr=tempFilePaths[0]
//获取图片位置信息
getImageData(FilePaths).then(res=>{
console.log(res)
if(getFloatLocationByExif(res.exif)!=null){
_this.latitude=getFloatLocationByExif(res.exif).lat;
_this.longitude=getFloatLocationByExif(res.exif).lon;
uni.request({
header:{"Content-Type": "application/text"},
//注意:这里的key值需要高德地图的 web服务生成的key 只有web服务才有逆地理编码
url:'https://restapi.amap.com/v3/geocode/regeo?output=JSON&location='+_this.longitude+','+_this.latitude+'&key=.........&radius=1000&extensions=all',
success(re) {
console.log(re)
if(re.statusCode===200){
if(!re.data.regeocode.addressComponent.city==[]){
_this.address=re.data.regeocode.addressComponent.city;
}
_this.address=re.data.regeocode.formatted_address;
console.log("获取中文街道地理位置成功",_this.address)
}else{
console.log("获取信息失败,请重试!")
}
}
});
}else{
console.log("图片路径缺失")
uni.showToast({
title: '请选择拍摄地点',
duration:850
});
_this.map()
}
uni.hideLoading()
}).catch(e=>{
console.log(e)
});
console.log(chooseImageRes.tempFiles[0].size,"图片大小")
if(chooseImageRes.tempFiles[0].size>3145728){
uni.compressImage({
src: _this.imgaddr,
quality: 80,
success: res => {
console.log('原路径',_this.imgaddr)
_this.imgaddr=res.tempFilePath
console.log('压缩图片路径',res.tempFilePath)
}
})
}
}
}
})
感觉是高德api出现了问题,但网上的解决方法基本都试过了,还是有问题,希望大佬指出问题所在!!
1***@qq.com (作者)
14:43:24.451 是麦穗, [Object] {"data":"1","statusCode":200,"errMsg":"uploadFile:ok"} at pages/firstpage/firstpage.vue:274
14:43:24.455 [Number] 3407630 , 图片大小 at pages/firstpage/firstpage.vue:312
14:43:24.500 [Object] {"type":"error","bubbles":false,"cancelBubble":false,"cancelable":false,"lengthComputable":...} at pages/firstpage/firstpage.vue:310
14:43:24.699 原路径, file:///storage/emulated/0/DCIM/Camera/IMG_20230419_092850.jpg at pages/firstpage/firstpage.vue:318
14:43:24.704 压缩图片路径, _doc/uniapp_temp_1682058871040/compressed/1682059405227_IMG_20230419_092850.jpg at pages/firstpage/firstpage.vue:320
这是真机运行输出的信息,没有报错,但是好像是直接把getImageData(FilePaths)这个方法给跳过了一样。。。
2023-04-21 14:45
DCloud_App_Array
回复 1***@qq.com: 根据日志分析出哪个API失败了,再查看对应API返回的错误信息来分析
2023-04-26 12:58