【发布时间】:2020-06-26 21:51:03
【问题描述】:
我正在尝试通过 api 以编程方式在我的 mapbox 帐户中创建一个新的 mapbox style。但是,我发现缺少这方面的文档。通过 api 创建样式的 mapbox 文档在这里:
https://docs.mapbox.com/api/maps/#create-a-style
从技术角度来看,这似乎很简单。但是,我发现实际的实现更加复杂。他们给出的示例(我以它为起点)使用了这种结构:
{
"version": 8,
"name": "My Awesome Style",
"metadata": { },
"sources": {
"myvectorsource": {
"url": "mapbox://{tileset_id}",
"type": "vector"
},
"myrastersource": {
"url": "mapbox://{tileset_id}",
"type": "raster"
}
},
"glyphs": "mapbox://fonts/{username}/{fontstack}/{range}.pbf",
"layers": [ ]
}
足够简单。但这与我在 mapbox studio 编辑器中创建样式的操作不太相关。在 mapbox studio 中,我从这样的模板开始:
这基本上就是我试图通过 mapbox api 以编程方式实现的目标。但是,我被困在两点上,这些是我的问题:
- “创建样式”的 api 端点没有“模板”选项。相反,它允许“源”和“层”。 “基本”模板如何与源和层相关联?换句话说,我需要以编程方式添加哪些源和层才能实现“基本模板”的结果?
- 如何将我的自定义图层添加到此“创建样式”请求中?我看到
layers是一个数组。但是一系列什么?网址?身份证?还有什么?作为参考,我希望将以下自定义图层附加到我的新样式中:
基本上,我想知道我的有效负载需要是什么样子才能使用基本模板和一个额外的自定义层创建新样式。到目前为止,我已经尝试过:
{
"version": 8,
"name": "test style via api",
"metadata": null,
"sources": {
"myrastersource": {
"url": "mapbox://styles/mapbox/streets-v11",
"type": "raster"
}
},
"glyphs": null,
"layers": []
}
之后我收到错误“Source url must be a valid Mapbox tileset url”。
我已经试过了:
{
"version": 8,
"name": "test style via api",
"metadata": null,
"sources": {
"myrastersource": {
"url": "mapbox://styles/mapbox/streets-v11",
"type": "raster"
}
},
"glyphs": null,
"layers": ["kenazthomas.c8ieto90"]
}
之后我收到错误 "layers[0]: 'type' or 'ref' is required"
我的有效载荷应该是什么样的?
【问题讨论】: