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() 源码

结果对比:
第一种方式:

第二种方式:

浙公网安备 33010602011771号