var myGeo = new window.BMap.Geocoder()
// 获取经纬度
var getPosition = function(data) {
var position = {}
data.forEach(item => {
myGeo.getPoint(
item.name,
point => {
if (point) {
position[item.name] = [point.lng, point.lat]
console.log(`${item.name}: ${[point.lng, point.lat]}`)
}
},
item.name
)
})
return position
}
// 经纬度信息
var geoCoordMap = getPosition(data)
相关的代码如上,在getPosition
方法中,有一个调用的百度地图的 API 进行逆地址解析,回调函数可能由于网络的原因在返回之后才执行,如何将这段代码改为等待回调函数全部执行完毕后,再返回position
对象?
forEach 换成 map,以返回迭代对象;
其得到的 a 是由多个 Promise 对象元素组成的数组;
接着使用 Promise.all(),具体用法请查看对应文档。