高德地图批量逆地址解析 经纬度转地址 源码
上一篇文章我们整理 高德地图实现批量地址解析,多个地理解析,批量地址转坐标经纬度 , 今天我们来实现一下利用高德地图webJS 实现逆地址解析的功能。效果如图所示:
实现步骤:
- 获取经纬度数据,可以是单个的坐标,也可以是多个坐标的数组 lnglats
- 判断用户输入的坐标类型: 国测局坐标(gcj02)、百度坐标(bd09)、谷歌坐标(wgs84)
- getAddress实现逆向地理编码: 坐标->地址
- 批量转换, 批量添加marker
- 展示转换结果列表
- 转换结果导出cvs文件到本地
批量逆地址编码: 源码——>
regeo() {
this.regeoBtn = true;
// 所有的坐标(用户输入的是字符串,用“;” 分割的坐标对)
let lnglats = [];
this.addressData = [];
this.markerList = [];
let lnglatArry = this.coord.split(";");
lnglats = lnglatArry.filter(function(s) {
return s && s.trim();
});
let position = lnglats.map((item) => {
let tmp = item.split(",");
let gcj02 = [];
//判断用户输入的坐标类型 :gcj02、bd09、wgs84
if (this.coordType == "gcj02") {
gcj02 = tmp;
}
if (this.coordType == "bd09") {
gcj02 = coordtransform.bd09togcj02(tmp[0] - 0, tmp[1] - 0);
}
if (this.coordType == "wgs84") {
gcj02 = coordtransform.wgs84togcj02(tmp[0] - 0, tmp[1] - 0);
}
this.markerList.push(gcj02);
return new AMap.LngLat(gcj02[0] - 0, gcj02[1] - 0);
});
let _this = this;
// getAddress实现逆向地理编码: 坐标->地址
this.geocoder.getAddress(position, function(status, result) {
let mlnglats = [];
let mformattedAddress = [];
position.map((item) => {
mlnglats.push({ lng: item.lng, lat: item.lat });
});
setTimeout(() => {
_this.regeoBtn = false;
if (status === "complete" && result.info === "OK") {
// 遍历所有地址push->adress
result.regeocodes.map((item) => {
mformattedAddress.push(item.formattedAddress);
_this.addMarkers(_this.markerList);
});
}
// 拼接数组
let ret = mlnglats.map((lnglats, i) => ({
lnglats,
formattedAddress: mformattedAddress[i],
}));
_this.addressData = ret;
},600)
});
},
调用 regeo()
方法,就可以实现如图所示的批量你地址解析功能了。