clone

  克隆有感:

    以为openlayer中给style设置样式为例:

let stylePoint = new Style({
  image: new Icon({
    src: "/map/gary.png",
  }),
});

results.forEach((point) => {
      const temp = stylePoint.clone(); // 克隆
      // stylePoint.setText(
      //  new Text({
      //       font: "15px Microsoft YaHei",     //第一种方法
      //       text: i.toString(),
      //       fill: new Fill({
      //            color: "#222",
      //        }),
      }));
  temp.setText(
        new Text({
             font: "15px Microsoft YaHei",      //第二种方法
             text: i.toString(),
             fill: new Fill({
                  color: "#222",
              }),
          }));
      this.addSearchPoint(
             point.location.lng,
             point.location.lat,
             temp,
             point.uid
           );
       arrGeom.push(new Point([point.location.lng, point.location.lat]));
       i = i + 1;
});      

第一种方法,每一次循环都会覆盖stylePoint设置的样式,循环完成之后stylePoint setText的值为最后一个i的值:10(前面所有设置的都被覆盖)

第二种方式,使用clone(),每次循环都将stylePoint克隆一份新的样式。再将新的样式赋值给点。

即:第一种方法,是添加的所有的点都用的是同一个样式,第二种方法clone出一样(其它相同,改变值text:i不同)的多个样式

 

openlayer style的clone() 源码

 

 

结果对比:

第一种方式:

第二种方式:

 

posted on 2022-03-03 13:06  zhanlanzzz  阅读(291)  评论(0)    收藏  举报