我有一张地图,它从 Mapbox 中获取数据(作为瓦片集)以将它们绘制在地图上。然后,人们必须能够注册并更新地图,因此 Mapbox 中还有一个数据集,用作可以添加新点的数据库。
现在,为了显示地图中的变化,我需要将数据集转换为瓦片集。根据文档,这是通过 Uploads API 完成的。
我想在前端触发这个过程,我有这个代码:
const url = "https://api.mapbox.com/uploads/v1/{username}?accessToken=" + private_token;
fetch(url, {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({
"tileset": "{username}.{a_new_tileset_name}",
"url": "mapbox://datasets/{username}/" + dataset_id,
"name": "gardens-dataset"
})
}).then(response => {
return response.json();
}).then(json => {
console.log(json);
});
{username} 和 {a_new_tileset_name} 已被替换。dataset_id 是我使用 Datasets API 创建数据集时得到的字符串 id。
控制台日志显示一条消息说“未经授权”,但是,此代码中使用的 private_token 已激活 uploads:read、uploads:write 和 uploads:list 范围(以及数据集和瓦片集的相同范围)。
该文档没有很好地解释这部分,我无法在任何地方找到除此之外的任何信息。我假设 POST 请求负载中的 tileset、url 或 name 键可能存在一些错误,但我没有看到有关 Mapbox 的更多详细信息。