收藏
回答

使用map组件时,在onLoad修改data中的markers后页面没有更新?

使用map组件时,在onLoad修改data中的markers数组,增加了新的点,但是新的点并没有在页面中显示

回答关注问题邀请回答
收藏

2 个回答

  • BlacK201
    BlacK201
    2019-08-27
    onLoad: function (options) {
      var newPoint = {};
      var that = this;
      for(var i = 0;i < this.data.points.length;i++){
        newPoint = {
          iconPath: "/resources/others.png",
          id: i,
          latitude: this.data.points[i].latitude,
          longitude: this.data.points[i].longitude,
          width: 50,
          height: 50,
        };
        that.data.markers.push(newPoint);
        console.log(newPoint);
      }
      console.log(this.data.markers);
    },

    onLoad这里我是这样写的,最后打印在console的this.data.markers也是有新数据的。。如果有错误,那请问应该改动哪里呢?

    2019-08-27
    有用
    回复 3
    • BlacK201
      BlacK201
      2019-08-27
      onLoad: function (options) {
        var newArray = [];
        var newPoint = {};
        var that = this;
        for(var i = 0;i < this.data.points.length;i++){
          newPoint = {
            iconPath: "/resources/others.png",
            id: i,
            latitude: this.data.points[i].latitude,
            longitude: this.data.points[i].longitude,
            width: 50,
            height: 50,
          };
          newArray.push(newPoint);
          console.log(newPoint);
        }
        that.setData({markers:newArray});
        console.log(this.data.markers);
      },

      原来这样写就可以了。。

      2019-08-27
      回复
    • Mr.zhao
      Mr.zhao
      2019-08-27
      onLoad: function (options) {
        var newPoint = {};
        var that = this;
        var markers = that.data.markers;//1.先定义一个变量用来存放当前的markers数组
        for (var i = 0; i < this.data.points.length; i++) {
          newPoint = {
            iconPath: "/resources/others.png",
            id: i,
            latitude: this.data.points[i].latitude,
            longitude: this.data.points[i].longitude,
            width: 50,
            height: 50,
          };
          markers.push(newPoint);//2.把标记点加到markers数组的末尾
          console.log(newPoint);
        }
        that.setData({
          markers: markers    //3.把新的markers数组渲染给data
        })
      },


      2019-08-27
      回复
    • BlacK201
      BlacK201
      2019-08-27回复Mr.zhao
      问题解决,谢谢您的指点!
      2019-08-27
      回复
  • Mr.zhao
    Mr.zhao
    2019-08-26

    你渲染给data了吗(setData)?

    2019-08-26
    有用
    回复 1
    • BlacK201
      BlacK201
      2019-08-27
      啊哈哈,一语惊醒,多谢大佬指点
      2019-08-27
      回复
登录 后发表内容
问题标签