我知道,由于缓存而在精灵中使用新图像可能需要几分钟。但是,经过一个多小时后,我仍然无法将新图像加载到地图上(我正在使用Mapbox JS GL)。 我验证了它在JSON响应中,并且可以在精灵图像中看到它。我已经对样式ID进行了三次检查,以确保我加载了合适的ID。
https://api.mapbox.com/styles/v1/{{username}}/{{style_id}}/sprite?access_token={{token}}
https://api.mapbox.com/styles/v1/{{username}}/{{style_id}}/sprite.png?access_token={{token}}
文档
(请参阅下面的引用部分,重点是我的),听起来好像我可以使用方法(API或通过Studio上传),并且两者将调和。
我的假设是您可以使用任何一种方法不正确吗?
我应该等待使用新图像多久?该文档模糊地指出,可能需要“至少15分钟”
您可以使用Mapbox Studio或 样式API,它将自动设置您的样式的精灵属性 正确的URL模板。然后,您可以将自定义SVG图像上传到 使用Studio或样式API单图像或批处理图像的样式 端点。任何引用Mapbox托管样式的MAPBOX API都将 自动构建并提供精灵文件。
我快到了,但是我错过了一个关键的步骤。您还必须向样式提交更新。取消样式的配置,并将结果的JSON保存到文件:
https://api.mapbox.com/styles/v1/{{username}}/{{style_id}}?access_token={{token}}
created
和
modified
字段。
从步骤2开始使用生成的JSON文件来使用您的样式。
curl -X PATCH "https://api.mapbox.com/styles/v1/{{username}}/{style_id}?access_token={{token}}" \
--data @updated-json.json \
--header "Content-Type:application/json"
这将重新生成通往精灵的路径,您可以通过以下方式验证其更新以下内容:
https://api.mapbox.com/styles/v1/{{username}}/{{style_id}}/{{sprite_id_from_response_in_3}}/sprite.png?access_token={{access_token}}