我正在使用 Mapbox 的静态图像 API 生成我在过去几天运行的路线图像。由于 URL 字符限制,我将采用 tileset 路线:每次运行都作为 Tileset Source 上传,我有一个将它们混合在一起的配方,然后我发布一个具有多个层的 Tileset。我希望能够调用静态图像 API 并告诉它(例如)将 layer_01 设置为“红色”,将 [layer_02、layer_03] 设置为“灰色”。使用 addLayer 可以自定义颜色,但我无法弄清楚如何从同一个 tileset 调用多个图层。这可能吗?如果不是,我是否需要将所有图层添加到自定义样式,并在每次调用前用新颜色重新发布它?必须不断重建样式,这似乎非常麻烦。
1 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
在没有看到您的风格或 tilesets 的结构的情况下,很难给出具体的建议。
但是,根据您对设置的描述,我相信您可以通过使用静态图像 API 的查询字符串参数动态生成路线样式层来实现“重新着色路线”的目标addlayer
。addlayer
之所以强大,主要是因为它允许您在请求时充分利用样式表达式来设置地图数据的样式。(注意:此建议假设您的路线具有一些显着特征。)
mapbox/streets-v11
作为概念的快速证明,这里是采用样式并添加新样式层的静态图像请求。该层使用match
表达式根据道路的“类别”为道路着色:
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
产生以下结果:
添加回答
举报
0/150
提交
取消