如何删除传单上的当前标记并再次添加新标记?

时间:2015-11-08 02:12:57

标签: javascript leaflet

我的代码出现问题。我在地图上显示标记,但不是更改标记位置,而是在地图上添加新标记。

我有一个问题的打印屏幕。

enter image description here

如何删除上一个标记?

这是我的代码:

var latB = 0;
var lonB = 0;
var mark = 0;
var marker = null;
function showOnMap(a){
    convert_location(a);
    marker = L.marker([latB, lonB]).bindPopup(a);
    map.removeLayer(marker)
    map.addLayer(marker);
}

function convert_location(a){
    var toData = (function (){
            var toData = null;
                $.ajax({
                    'async': false,
                    'global': false,
                    'url': 'http://nominatim.openstreetmap.org/search?format=json&limit=5&q='+a,
                    'dataType': 'json',
                    'success': function(data){
                        toData = data;
                    }
                });
            return toData;
    })();

    $.each(toData, function(key, val){
        latB = val.lat;
        lonB = val.lon;
    });

}

1 个答案:

答案 0 :(得分:0)

在设置对新标记的引用后,您正在删除标记,因此基本上您要删除不存在的新标记,然后将其添加到地图中。 在重新分配之前,应该从地图中删除标记。

function showOnMap(a){
  convert_location(a);
  if (marker != null) map.removeLayer(marker);
  marker = L.marker([latB, lonB]).bindPopup(a);
  map.addLayer(marker);
}