在添加新标记之前删除添加的标记

时间:2019-01-22 09:02:45

标签: javascript openlayers openstreetmap

我正在尝试使用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

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/