想将一个数组中的地址通过qqmapsdk.geocoder进行解析,并作为markers在地图上标注出来。思路【将解析的结果放入数组中,后将此数组作markers】。但发现在地图上没有标注点显示。发现原因是虽然局部变量temp数组成功添加所有结果,但最终setData后,数组中有内容,却没有长度;网上找原因说是因为异步,自己尝试了很久都没办法成功,求大佬指教!菜且第一次提问,如果有描述不清楚希望多多包涵!并且可以说说我这个思路是否可行吗?谢谢
getLocat_mark: function (flag) { // 解析附近list(高&中)中地址
var _this = this;
var index = 0
var temp = []
var address
var Len
var iconPath
var timer = setInterval(function () {
if (flag === 0) {
address = _this.data.shListR[index].address;
Len = _this.data.shListR.length;
iconPath = './../../images/mark_red.png';
} else if (flag === 1) {
address = _this.data.smListR[index].address;
Len = _this.data.smListR.length;
iconPath = './../../images/mark_yel.png';
}
//调用地址解析接口
qqmapsdk.geocoder({
//获取表单传入地址
address: address, //地址参数,例:固定地址,address: '北京市海淀区彩和坊路海淀西大街74号'
success: function (res) { //成功后的回调
console.log('res', res);
var res = res.result;
var latitude = res.location.lat;
var longitude = res.location.lng;
temp.push({
id: index,
title: res.title,
latitude: latitude,
longitude: longitude,
locate: address,
iconPath: iconPath,
width: 20,
height: 20,
})
console.log('请求后push',temp)
//解决:此处setData更新数据
},
fail: function (error) {
console.error(error);
},
complete: function (res) {
console.log(res);
}
});
index++;
if (index >= Len) {
clearInterval(timer);
}
}, 360)
if (flag === 0) {
_this.setData({
hListM: temp,
// markers : temp
})
} else {
_this.setData({
mListM: temp
})
}
【解决办法】
在拿到数据后用setData更新
(太菜了。。谢谢帮忙的大佬,感谢感谢)
执行顺序问题