Mapbox没有具有此ID的源

r0x*_*nne 0 mapbox mapbox-gl mapbox-gl-js

我想删除Mapbox地图上的源和图层。我设法删除了所有的源和图层,除了我添加到Mapbox地图中的第一个源和图层。

请注意,我不太擅长使用jQuery $ .post。

这是我添加所有源和图层的方法。

$.post('ajax/marker.php', function(data)
{
    var firstSplit = data.split(",");

    for(i=0;i<firstSplit.length-1;i++)
    {
        var secondSplit = firstSplit[i].split("|");
        var id = secondSplit[0];
        var lat = secondSplit[1];
        var lng = secondSplit[2];

        var point = {
            "type": "Point",
            "coordinates": [lat, lng]
        };

        map.addSource(id, { type: 'geojson', data: point });
        map.addLayer({
            "id": id,
            "type": "symbol",
            "source": id,
            "layout": {
                "icon-image": "airport-15"
            }
        }); 
    }
}); 
Run Code Online (Sandbox Code Playgroud)

记住,我设法查看了Mapbox地图上的所有源和图层。 只是我不能只删除添加到地图的第一个源和图层。我希望外面有人对此有一些想法。谢谢。

我在循环中使用了以下两个语句来删除源和图层。

map.removeSource(id);
map.removeLayer(id);
Run Code Online (Sandbox Code Playgroud)

我做了一个测试,手动删除了第一个源和图层,如下所示,但它不起作用。

map.removeSource('1612280004A');
map.removeLayer('1612280004A');
Run Code Online (Sandbox Code Playgroud)

但是,它适用于下一个源和层。

Ste*_*ett 6

从您发布的内容中,我最好的猜测是,尽管仍然有附加的源,但是您无法删除该层。尝试反转两个语句的顺序:

map.removeLayer('1612280004A'); map.removeSource('1612280004A');