收藏
回答

【已解】地址解析,设标注点。将结果存入数组,数组中有数据,但length为0;求教怎么样才可以存入?

想将一个数组中的地址通过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更新

(太菜了。。谢谢帮忙的大佬,感谢感谢)

最后一次编辑于  2022-03-24
回答关注问题邀请回答
收藏

1 个回答

  • 金
    2022-03-24

    执行顺序问题

    2022-03-24
    有用
    回复 1
    • □
      2022-03-24
      谢谢回复!已经解决了
      2022-03-24
      回复
登录 后发表内容