逆地理编码功能提供将经纬度坐标转换为详细地址信息的能力,基于高德地图API实现。该功能可以用于:
在 backend/ruoyi-admin/src/main/resources/application-dev.yml 中配置您的高德地图API密钥:
# 高德地图配置
amap:
# 高德地图API密钥(请替换为您的实际密钥)
key: your_amap_key_here
# 高德地图API基础URL
url: https://restapi.amap.com
/system/SysRegion/reverse-geocodePOSTsystem:SysRegion:geocode// 前端调用示例
const response = await fetch('/system/SysRegion/reverse-geocode', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
'clientid': 'e5cd7e4891bf95d1d19206ce24a7b32e'
},
body: JSON.stringify({
longitude: 120.1551,
latitude: 30.2741
})
});
const result = await response.json();
if (result.code === 200) {
const address = result.data.regeocode.formattedAddress;
console.log('地址:', address);
}
{
"code": 200,
"msg": "操作成功",
"data": {
"status": "1",
"info": "OK",
"infocode": "10000",
"regeocode": {
"formattedAddress": "浙江省杭州市西湖区文三路",
"addressComponent": {
"country": "中国",
"province": "浙江省",
"city": "杭州市",
"district": "西湖区",
"township": "文三街道",
"street": "文三路",
"number": "123号",
"adcode": "330106",
"citycode": "0571"
}
}
}
}
// 获取用户当前位置并转换为地址
navigator.geolocation.getCurrentPosition(async (position) => {
const { longitude, latitude } = position.coords;
const response = await fetch('/system/SysRegion/reverse-geocode', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
},
body: JSON.stringify({ longitude, latitude })
});
const result = await response.json();
if (result.code === 200) {
const address = result.data.regeocode.formattedAddress;
// 显示用户当前位置
showUserLocation(address);
}
});
// 为地图标记点获取详细地址信息
async function getMarkerAddress(longitude, latitude) {
const response = await fetch('/system/SysRegion/reverse-geocode', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
},
body: JSON.stringify({ longitude, latitude })
});
const result = await response.json();
if (result.code === 200) {
const addressComponent = result.data.regeocode.addressComponent;
return {
province: addressComponent.province,
city: addressComponent.city,
district: addressComponent.district,
street: addressComponent.street
};
}
return null;
}
// 根据坐标获取地址供用户选择
async function getAddressOptions(longitude, latitude) {
const response = await fetch('/system/SysRegion/reverse-geocode', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
},
body: JSON.stringify({ longitude, latitude })
});
const result = await response.json();
if (result.code === 200) {
const regeocode = result.data.regeocode;
return [
regeocode.formattedAddress,
`${regeocode.addressComponent.province}${regeocode.addressComponent.city}`,
`${regeocode.addressComponent.city}${regeocode.addressComponent.district}`,
regeocode.addressComponent.street
];
}
return [];
}
项目提供了完整的测试脚本,可以验证功能是否正常工作:
cd test
python 逆地理编码API测试脚本.py
测试脚本包含以下坐标点:
如有问题,请参考: