Browse Source

实现经纬度到实际地址的转换,并保存到数据库

pull/1/head
SwTt29 2 months ago
parent
commit
2829e1cfa7
  1. 33
      pages/profile/index.js
  2. 28
      server-example/server-mysql.js

33
pages/profile/index.js

@ -882,8 +882,11 @@ Page({
if (res.data.status === 0) {
const address = res.data.result.address;
that.setData({ locationInfo: address });
// 可以将位置信息保存到本地存储
// 将地址信息保存到本地存储
wx.setStorageSync('locationInfo', address);
// 保存地址信息到数据库
that.saveAddressToDatabase(latitude, longitude, address);
} else {
wx.showToast({
title: '获取地址失败',
@ -901,6 +904,34 @@ Page({
});
},
// 将地址信息保存到数据库
saveAddressToDatabase(latitude, longitude, address) {
const api = require('../../utils/api.js');
const openid = wx.getStorageSync('openid');
if (!openid) {
console.error('保存地址失败:用户未登录');
return;
}
const addressData = {
openid: openid,
latitude: latitude,
longitude: longitude,
address: address
};
console.log('保存地址到数据库:', addressData);
// 调用API保存地址信息
api.request('/api/user/update-location', 'POST', addressData)
.then(res => {
console.log('地址保存成功:', res);
}).catch(err => {
console.error('地址保存失败:', err);
});
},
// 更新用户名称
updateName(newName) {
return new Promise((resolve, reject) => {

28
server-example/server-mysql.js

@ -1188,7 +1188,7 @@ async function createUserAssociations(user) {
// 专门用于更新用户位置信息的API端点
app.post('/api/user/update-location', async (req, res) => {
try {
const { openid, latitude, longitude } = req.body;
const { openid, latitude, longitude, address } = req.body;
if (!openid) {
return res.json({ success: false, message: '缺少openid' });
@ -1203,8 +1203,19 @@ app.post('/api/user/update-location', async (req, res) => {
console.log('更新用户位置信息:', { openid, locationJson });
// 准备要更新的数据
const updateData = {
authorized_region: locationJson,
updated_at: getBeijingTime()
};
// 如果有地址信息,保存到detailedaddress字段
if (address) {
updateData.detailedaddress = address;
}
const updateResult = await User.update(
{ authorized_region: locationJson, updated_at: getBeijingTime() },
updateData,
{ where: { openid } }
);
@ -1212,13 +1223,20 @@ app.post('/api/user/update-location', async (req, res) => {
if (updateResult[0] > 0) {
// 查询更新后的用户数据
const updatedUser = await User.findOne({ where: { openid }, attributes: ['authorized_region'] });
const updatedUser = await User.findOne({
where: { openid },
attributes: ['authorized_region', 'detailedaddress']
});
console.log('更新后的位置信息:', updatedUser.authorized_region);
console.log('更新后的地址信息:', updatedUser.detailedaddress);
return res.json({
success: true,
message: '位置信息更新成功',
data: { authorized_region: updatedUser.authorized_region }
message: '位置和地址信息更新成功',
data: {
authorized_region: updatedUser.authorized_region,
address: updatedUser.detailedaddress
}
});
} else {
return res.json({ success: false, message: '用户不存在或位置信息未更新' });

Loading…
Cancel
Save