我在mapbox studio的帮助下创建了几个图层,并使用样式表链接初始化了mapboxgl对象。
这个工作正常,但现在我想在客户端刷新/重新分配一些真正的新来源。
我正在使用以下代码
mapBox.addSource('source-id', { type: 'geojson', data: mergedOverlaysGeoJson });
mapBox.addLayer({
"id": 'some-already-created-layer-id',
"source":'source-id',
"type" : "symbol"});
但它没有像预期的那样工作,期望是:
无论我给addLayer方法提供什么属性,它都应该覆盖通过工作室传入的相应属性,它应该保留其他属性
'id',图层的'source'和图层字段的'type'是检测现有图层所必需的
答案 0 :(得分:1)
mapbox-gl不允许具有重复ID的图层。使用已添加到地图中的ID调用addLayer
,不会覆盖"覆盖"当前层。
如果你想"更新"在图层中,您应该删除样式定义的图层,然后使用您提供的代码重新添加它。虽然如此,你将失去油漆和油漆。原始图层的布局属性。您可以使用map.getPaintProperty/getLayoutProperty
检索原始图层的样式,然后将其传递给新图层。
您也无法切换连接图层的来源。
答案 1 :(得分:0)
除了Scarysize的答案之外,如果您的特定需求正在替换GeoJSON源的sys.maxint
,那么您也可以直接使用data
执行此操作:
setData()