首页 > 解决方案 > 静态地图上的热图

问题描述

我正在尝试使用静态地图 api 和 PHP 在静态地图上显示热图。我已经能够生成静态地图,但是在尝试添加热图图层时,我无法这样做。我尝试通过使用 addsource 和直接在 url 的 addlayer 参数中添加内联 geojson 源和外部 geojson 文件,但它们都不起作用。

有人可以举一个例子或以某种方式指导我吗?

提前致谢。

编辑:为了显示和示例,尝试复制地震示例:

$url  = 'https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/-120,50/access_token=MY_ACCESS_TOKEN';
$url .= "&addsource={'earthquakes',{'type':'geojson','data':'https://docs.mapbox.com/mapbox-gl-js/assets/earthquakes.geojson'}}";
$url .= "&addlayer={'id':'earthquakes-heat','type':'heatmap','source':'earthquakes','maxzoom':'9'}";

当我尝试这个时,控制台显示

'消息“传递给 addlayer 的层无效。无法解析 JSON。”'

我只想创建一个地图图像,我使用上面显示的第一行代码,并传递一些地理点来接收热图图像,但无法这样做。

我曾尝试使用内联geojson、远程geojson、与mapbox studio(我可以轻松创建热图)和一些变体混合,但我真的不知道我错过了什么。

标签: phpstaticmapboxheatmap

解决方案


因此,@vstelmakh 关于您原始帖子中的 JSON 格式不正确是正确的。但是,还值得一提的是您当前方法的两个额外问题:

  1. 静态图像 API 当前不支持addsource查询字符串参数,因此在您发出请求时会忽略此信息。
  2. addlayer查询字符串参数当前不支持 GeoJSON 源。为了正确添加热图样式图层,您需要首先将数据上传为 mapbox 瓦片集,然后在 addlayer 参数中引用它。

API 文档

要从不属于样式的源添加样式层,您必须在新样式层中指定 source.url 和 source.type,例如:

"source": {
  "type": "vector",
  "url": "mapbox://{username}.{tileset}"
}

source.url必须是一个mapbox://tileset URL,并且必须可以被请求中使用的访问令牌访问。source.type必须是rastervector


免责声明:我目前在 Mapbox 工作


推荐阅读