在web端测试经纬度逆地址解析有2中方式,先准备好两个应用key
第一种,使用“浏览器端”应用类型
const address = ref('')
const latitude = ref() // 经度
const longitude = ref() // 纬度
const ak = '你的key' // 浏览器端
function getAddressWeb() {// 创建地理编码实例 var myGeo = new BMapGL.Geocoder();// 根据坐标得到地址描述 myGeo.getLocation(new BMapGL.Point(longitude.value, latitude.value), (result) => {if (result) {address.value = result.address}});
}并在index.html插入script标签,引入百度地图sdk
<script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=你的key"></script>
第二种,使用“服务端”应用key
const ak = '你的key' // 服务器端
const latitude = ref() // 经度
const longitude = ref() // 纬度
const address = ref('')
function getAddressServe() {fetch(`/baidu?location=${latitude.value},${longitude.value}&output=json&coordtype=wgs84ll&ak=${ak}`).then(resp => resp.json()).then(res => {console.log(res);address.value = res.result.formatted_address;})
}
且需要配置vite.config.js文件的代理
server: {proxy: {'/baidu': {target: 'https://api.map.baidu.com/reverse_geocoding/v3/',changeOrigin: true,rewrite: (path) => path.replace(/^\/baidu/, ''),},},
},
如果你用“浏览器端”key测试服务器端会报240报错
{"status": 240,"message": "APP 服务被禁用"
}
不过需要注意的是,这两种方法都会导致你的key暴露,以上代码只做测试用不能用于线上发布,线上肯定还是要把key放在后端的。