Mapbox没有此ID的来源

问题描述 投票:0回答:2

我想删除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"
            }
        }); 
    }
}); 

请记住,我设法查看Mapbox地图上的所有源和图层。它只是我无法删除我添加到地图的第一个源和图层。我希望有人对这个问题有一些想法。谢谢。

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

map.removeSource(id);
map.removeLayer(id);

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

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

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

mapbox mapbox-gl mapbox-gl-js
2个回答
5
投票

我对您发布的内容的最佳猜测是,在仍然附加源的情况下,您无法删除该图层。尝试颠倒两个语句的顺序:

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


0
投票

我的GeoJson共享了相同的ID。删除图层和源修复了此问题

 function RemoveMapLayer() {
        var mpLayer = map.getLayer("points");
        if (typeof mpLayer === 'undefined') {
            // No Layer
        } else {
            map.removeLayer("points");
        }

        var mpSource = map.getSource("points");
        if (typeof mpSource === 'undefined') {
            alert("no source");
        } else {
            map.removeSource("points");
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.