如何解决如何解决错误:“mapboxgl:更新图层时已存在具有此 ID 的源”?
我使用 Mapbox-gl 在我的代码中显示地图
更新地图线并重新设置它们时,我收到此错误:
mapboxgl:已经有这个 ID 的来源
在设置图层和源之前,我将其删除
if (this.map.getLayer('mapLine')) {
this.map.removeSource('lines');
this.map.removeLayer('mapLine');
}
之后我在做这个操作:
this.map.addSource('lines',{
type: 'geojson',data: {
type: 'FeatureCollection',features,},});
this.map.addLayer({
id: 'mapLine',type: 'line',source: {
type: 'geojson',data: {
type: 'FeatureCollection',paint: { 'line-width': 4,'line-color': ['get','color'] },});
但是,我在尝试添加图层时遇到错误。
解决方法
线路是动态变化的还是只是为了测试?
当我需要来自 geojson 的动态更新数据时,我只需覆盖源。您的示例代码中的图层并没有真正改变,对吗?您只想要新数据?
要更新您可以使用的源:
this.map.getSource('lines').setData(data);
比在 addLayer 代码中检查它是否存在:
if (!this.map.getLayer('mapline')) {
this.map.addLayer({
id: 'mapLine',type: 'line',source: {
type: 'geojson',data: {
type: 'FeatureCollection',features,},paint: { 'line-width': 4,'line-color': ['get','color'] },});
}
希望这会有所帮助。如果你有问题就问:) 干杯
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。