当时在写项目时搜索了很多帖子都不是很有用,以下是我的获取经纬度过程(包括当前时间以及扫码获取二维码信息)
首先要保证你已经配置了正确的appid,如果没有配置就去微信公众平台申请一个
在配置好后并且已经创建项目后打开manifest.json配置文件,找到微信小程序配置
然后打开这个配置,之后就可以直接用uni的方法拿到经纬度
上源码(包含扫码、当前时间、经纬度)
methods: {
// 时间
formatDate(date) {
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
const hours = date.getHours().toString().padStart(2, '0');
const minutes = date.getMinutes().toString().padStart(2, '0');
const seconds = date.getSeconds().toString().padStart(2, '0');
return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}+08:00`;
},
scan() {
let formData = {};
// 先获取经纬度
uni.getLocation({
success: (locationRes) => {
console.log("经纬度:", locationRes);
console.log(locationRes.longitude);
console.log(locationRes.latitude);
//储存
formData.longitude = locationRes.longitude;
formData.latitude = locationRes.latitude;
// 然后进行扫码
uni.scanCode({
success: (scanRes) => {
console.log("扫码结果:", scanRes.result);
// 找到 JSON 数据的起始位置
const startIndex = scanRes.result.indexOf('{');
const endIndex = scanRes.result.lastIndexOf('}');
// 提取 JSON 数据
const jsonString = scanRes.result.substring(startIndex, endIndex +
1);
// 解析 JSON 数据
const parsedData = JSON.parse(jsonString);
// 获取 classroom_id 和 seat_id 的值
const classroomId = parsedData.classroom_id;
const seatId = parsedData.seat_id;
// 打印结果
console.log('classroom_id:', classroomId);
console.log('seat_id:', seatId);
//储存
formData.classroom_id = classroomId;
formData.seat_id = seatId;
// 获取当前标准时间
//const currentTime = new Date();
// 储存
let inputTime= this.formatDate(new Date()) ;
console.log(inputTime, '---------------时间格式')
// const isoTimestamp=inputTime.toISOString();
formData.time = inputTime; //isoTimestamp
console.log(formData, JSON.stringify((formData), JSON.parse(JSON.stringify((formData)))), '-----------------表单数据'); // 记录储存结果
console.log(123456789);
//调用接口
const realresult = qiandao(JSON.stringify(formData)).then(res => {
console.log("拿到数据", res.code);
if(res.code===2018){
uni.showToast({
title: '扫码成功',
icon: 'success',
mask:true,
duration: 2000,
});
// 延迟一段时间等待第一个提示结束
setTimeout(function () {
uni.showToast({
title: '重复签到',
icon: 'none',
mask:true,
duration: 2000,
});
// 再次延迟一段时间等待第二个提示结束
setTimeout(function () {
uni.navigateBack({
delta: 1
});
}, 2000); // 这里的延迟时间要与第二个提示的 duration 一致
}, 2000); // 这里的延迟时间要与第一个提示的 duration 一致
}if(res.code===2017){
uni.showToast({
title: '扫码成功',
icon: 'success',
mask:true,
duration: 2000,
});
// 延迟一段时间等待第一个提示结束
setTimeout(function () {
uni.showToast({
title: '未查询到预约记录',
icon: 'none',
mask:true,
duration: 2000,
});
// 再次延迟一段时间等待第二个提示结束
setTimeout(function () {
uni.navigateBack({
delta: 1
});
}, 2000); // 这里的延迟时间要与第二个提示的 duration 一致
}, 2000); // 这里的延迟时间要与第一个提示的 duration 一致
}if(res.code===2019){
uni.showToast({
title: '扫码成功',
icon: 'success',
mask:true,
duration: 2000,
});
// 延迟一段时间等待第一个提示结束
setTimeout(function () {
uni.showToast({
title: '超出签到范围',
icon: 'none',
mask:true,
duration: 2000,
});
}, 2000); // 这里的延迟时间要与第一个提示的 duration 一致
}if(res.code===2000){
uni.showToast({
title: '签到成功',
icon: 'success',
mask:true,
duration: 2000,
});
}if(res.code===2016){
uni.showToast({
title: '未在规定时间内签到',
icon: 'none',
mask:true,
duration: 2000,
});
}else{
uni.showToast({
title: '未登录!!!',
icon: 'none',
mask:true,
duration: 2000,
});
// 延迟一段时间等待第一个提示结束
setTimeout(function () {
uni.navigateBack({
delta:1
})
}, 2000); // 这里的延迟时间要与第一个提示的 duration 一致
}
});
},
fail: (scanRes) => {
console.error(scanRes);
uni.showToast({
title: '取消扫码或扫码失败',
icon: 'none',
duration: 2000,
});
},
});
},
fail: (locationRes) => {
console.error(locationRes);
uni.showModal({
title: '位置授权提示',
content: '需要授权位置信息才能使用此功能,请点击确定跳转至设置页面进行授权。',
showCancel: false,
success: (modalRes) => {
if (modalRes.confirm) {
// 用户点击确定,跳转至设置页面
uni.openSetting({
success: (settingRes) => {
console.log(settingRes);
if (settingRes.authSetting[
'scope.userLocation']) {
// 用户授权成功,可以再次尝试获取位置信息
this.scan();
} else {
// 用户仍未授权
uni.showToast({
title: '未授权位置信息',
icon: 'none',
duration: 2000,
});
}
},
});
}
},
});
},
});
},
},