在 MapBox 静态图像 API 调用期间重新着色多个图层?

Re-color multiple layers during MapBox Static Image API call?

我正在使用 Mapbox 的静态图像 API 生成我在过去几天 运行 的路线图像。由于 URL 个字符限制,我将采用 tileset 路线:每个 运行 都作为 Tileset 源上传,我有一个将它们混合在一起的配方,然后我发布一个包含多个图层的 Tileset .

我希望能够调用静态图像 API 并告诉它(例如)将 layer_01 设为“红色”并且 [layer_02、layer_03 ] “灰色的”。使用 addLayer 可以自定义颜色,但我无法弄清楚如何从同一个 tileset 调用多个图层。这可能吗?

如果不是,我是否需要将所有图层添加到自定义样式,并在每次调用前用新颜色重新发布它?必须不断重建样式,这似乎非常麻烦。

在没有看到您的风格或图块集结构的情况下,很难给出具体的建议。

但是,根据您对设置的描述,我相信您可以通过使用静态图像动态生成路线样式层来实现“re-coloring 路线”的目标 API' s addlayer 查询字符串参数。 addlayer 之所以强大,主要是因为它允许您在请求时充分利用样式表达式来设置地图数据的样式。 (注意:此建议假定您的路线具有一些显着特征。)

作为概念的快速证明,这里是一个采用 mapbox/streets-v11 样式并添加新样式层的静态图像请求。该图层使用 match 表达式根据道路的“class”为道路着色:

https://api.mapbox.com/styles/v1/mapbox/streets-v11/static/-122,36.99,11/300x300?before_layer=road-number-shield&addlayer={%22id%22:%22road-overlay%22,%22type%22:%22line%22,%22source%22:%22composite%22,%22source-layer%22:%22road%22,%22paint%22:{%22line-color%22:%20[%22match%22,%20[%22get%22,%20%22class%22],%20%22motorway%22,%20%22%23ff0000%22,%20%22primary%22,%20%22%23FFFF00%22,%20%22secondary%22,%20%22%23FF00FF%22,%20%22street%22,%20%22%2300FFFF%22,%20%22%23FFFFFF%22],%22line-width%22:2}}&access_token=your.tk

产生以下结果:

map image