我正在尝试使用openlayers开发具有标签位置功能的Web应用程序。单击后,我想添加最多一个标记。当用户第二次单击地图时,先前的标记将被删除。但是,在添加新标记之前,我找不到删除标记的合适方法。
i1 <- table(vec)
vec[vec %in% names(i1)[i1 > min]]
#[1] 0 1 1 2 0 2 1 1 0 0 0 1 1 2 1 1 1 2
答案 0 :(得分:2)
您有几种方法可以做到这一点。 最正确的方法是使用:
vectorLayer.getSource().clear();
或:
vectorSource.clear();
但是对于您而言,每次添加标记时,您也会添加一个新图层,只需在添加地图之前从地图上删除该图层就足够了:
var vectorLayer;
function addPin(Markers) {
//here it is
myMap.removeLayer(vectorLayer)
var item = Markers;
var longitude = item.lng;
var latitude = item.lat;
.........................
.........................
//and here remove the keyword var , so init the one declared in global section
vectorLayer = new ol.layer.Vector({
source: vectorSource
});
不要忘记在全局区域而不是在addPin函数内部声明矢量层,否则会出错
答案 1 :(得分:1)
如果您只想获取标记的当前位置,我建议您不要将以前的值保存在您的要素数组中。这是JS小提琴的基本解决方案。
在您的 addPin
函数中更改此内容
var vectorSource = new ol.source.Vector({
features: [iconFeature]
});
你可以在这里看到工作副本 https://jsfiddle.net/shahhassancs/xgw5jus7/4/