addFeature和removeFeature
添加小图标到地图上,并移除上一次添加到地图上的小图标
// 点击事件
rowClick(row){
// 1. 设置地图中心点和缩放级别
let center = [row.longitude, row.latitude];
let zoom = 18;
let view = this.map.getView();
view.setCenter(center);
view.setZoom(zoom);
// 2. 显示当前选择的某一行显示在地图上
this.addSelectedToMap(row);
// 3. 清除上一次选择某一行之后出现在地图上的小图标
this.clearOldIconFeature();
},
addSelectedToMap(row){
let createLabelStyle1 = function (feature) {
return new Style({
image: new Icon(
({
anchorOrigin: 'top-right', //图标起点
anchorXUnits: 'fraction', //指定x值为图标点的x值
anchorYUnits: 'pixels', //指定Y值为像素的值
offsetOrigin: 'top-right', //偏移
opacity: 1, //透明度
src: '/img/demo.png' //图标的url
})),
});
};
let wgsLngLat = [row["longitude"], row["latitude"]];
let iconFeature = new Feature({
geometry: new Point(wgsLngLat)
});
iconFeature.setStyle(createLabelStyle1(iconFeature));
this.vectorSource.addFeature(iconFeature); // 添加iconFeature到地图上
this.iconFeature = iconFeature; // 保留添加到map上的iconFeature,等待删除
this.map.addOverlay(this.overlay);
},
clearOldIconFeature(){
if(this.iconFeature !== null){
// listens to the 'addfeature' event once and then removes the preIconFeature.
this.vectorSource.once('addfeature', (event) => {
const feature = event.feature;
this.vectorSource.removeFeature(this.iconFeature); // 删除上一个iconFeature
});
}
}, 
京公网安备 11010502036488号