实例代码
这里假设已知用户的地址为 this.userPosition(经纬度)
商家地址动态传入
// 这里假设已知用户的地址为 this.userPosition(经纬度)
// 商家地址动态传入
async computedRange(address) {
let positionResult = {}
let map = new AMap.Map('container', {
resizeEnable: true,
zoom: 13
})
let m1 = new AMap.Marker({ // 用户地址
map: map,
draggable: true,
position: new AMap.LngLat(this.userPosition.lon, this.userPosition.lat)
})
let result = await this.getLocation(address)
positionResult.lon = result.geocodes[0].location.lng
positionResult.lat = result.geocodes[0].location.lat
let m2 = new AMap.Marker({ // 商家地址
map: map,
draggable:true,
position:new AMap.LngLat(positionResult.lon, positionResult.lat)
});
var p1 = m1.getPosition();
var p2 = m2.getPosition();
var distance = (Math.round(p1.distance(p2)) / 1000).toFixed(1); // 千米
var distance2 = Math.round(p1.distance(p2)); // 米
return distance
},
// 获取位置
getLocation(address) {
return new Promise((resolve, rejrct) => {
let geocoder = new AMap.Geocoder({})
geocoder.getLocation(address, function(status, result) {
resolve(result)
})
})
},
利用gieLocation方法获取商家的经纬度(地址转经纬度),然后通过用户和商家的经纬度,用高德的api进行计算即可。