如何将从mapbox studio添加的图层分配给在客户端创建的源?

时间:2017-11-28 13:29:00

标签: mapbox-gl-js mapbox-gl

我在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'是检测现有图层所必需的

2 个答案:

答案 0 :(得分:1)

mapbox-gl不允许具有重复ID的图层。使用已添加到地图中的ID调用addLayer,不会覆盖"覆盖"当前层。

如果你想"更新"在图层中,您应该删除样式定义的图层,然后使用您提供的代码重新添加它。虽然如此,你将失去油漆和油漆。原始图层的布局属性。您可以使用map.getPaintProperty/getLayoutProperty检索原始图层的样式,然后将其传递给新图层。

您也无法切换连接图层的来源。

答案 1 :(得分:0)

除了Scarysize的答案之外,如果您的特定需求正在替换GeoJSON源的sys.maxint,那么您也可以直接使用data执行此操作:

setData()