我想删除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');
但是,它适用于下一个源和层。
我对您发布的内容的最佳猜测是,在仍然附加源的情况下,您无法删除该图层。尝试颠倒两个语句的顺序:
map.removeLayer('1612280004A');
map.removeSource('1612280004A');
我的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");
}
}