我在mapbox gl中添加和删除图层时遇到问题。
我有这一层:
Counter
然后我通过执行以下操作删除它:
from collections import Counter
s = 'AAAAATTT'
print([(k*2, v - 1) for k, v in Counter(list(s)).items() if v > 1])
#output: [('AA', 4), ('TT', 2)]
一切正常。
但是,当尝试再次添加同一层时,我收到以下错误:
map.addLayer({
"id": "route",
"type": "line",
"source": {
"type": "geojson",
"data": {
"type": "Feature",
"properties": {},
"geometry": {
"type": "LineString",
"coordinates": [
[-122.48369693756104, 37.83381888486939],
[-122.48348236083984, 37.83317489144141],
[-122.48339653015138, 37.83270036637107],
[-122.48356819152832, 37.832056363179625],
[-122.48404026031496, 37.83114119107971],
[-122.48404026031496, 37.83049717427869],
[-122.48348236083984, 37.829920943955045],
[-122.48356819152832, 37.82954808664175],
[-122.48507022857666, 37.82944639795659],
[-122.48610019683838, 37.82880236636284],
[-122.48695850372314, 37.82931081282506],
[-122.48700141906738, 37.83080223556934],
[-122.48751640319824, 37.83168351665737],
[-122.48803138732912, 37.832158048267786],
[-122.48888969421387, 37.83297152392784],
[-122.48987674713133, 37.83263257682617],
[-122.49043464660643, 37.832937629287755],
[-122.49125003814696, 37.832429207817725],
[-122.49163627624512, 37.832564787218985],
[-122.49223709106445, 37.83337825839438],
[-122.49378204345702, 37.83368330777276]
]
}
}
},
"layout": {
"line-join": "round",
"line-cap": "round"
},
"paint": {
"line-color": "#888",
"line-width": 8
}
});
即使我添加了一个图层。我不知道如何删除源代码,因为源代码没有ID。
我的最终结果是能够通过单击按钮添加和删除此图层。
有人可以帮我吗?
答案 0 :(得分:6)
我刚刚发现创建的源代码具有与图层中相同的ID,所以:
map.removeSource('route')
完美地完全移除了图层和来源。
答案 1 :(得分:1)
您应该先删除图层,然后再删除其源。
map.removeLayer(id);
map.removeSource(id);
对于您的情况id = 'route'
。
答案 2 :(得分:0)
...并尝试删除源/层之前,先检查它们是否存在
if (map.getLayer(id)) {
map.removeLayer(id);
}
if (map.getSource(id)) {
map.removeSource(id);
}