You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenMapTiles中正确显示自定义点标记?

问题排查与解决建议

背景信息

我的config.json配置了两个数据源:

"data": {
  "openmaptiles": {
    "mbtiles": "tiles.mbtiles"
  },
  "starbucks": {
    "mbtiles": "starbucks.mbtiles"
  }
}
  • tiles.mbtiles:提取的区域基础地图数据
  • starbucks.mbtiles:通过QGIS提取点数据,转GeoJson后用tippecanoe工具转换生成的MBTiles文件

遇到的问题:在OpenMapTiles的数据预览模式下能看到星巴克的点标记,但关闭预览后就消失了,推测是styles.json的图层配置有误。

(注:两张配图分别为「数据预览模式下显示点标记的地图」和「关闭预览后点标记消失的地图」)

当前styles.json中对应点的图层配置:

{
  "id": "undefined",
  "type": "symbol",
  "source": "starbucks",
  "source-layer": "place",
  "layout": {
    "icon-image": "park_11",
    "icon-size": 1,
    "visibility": "visible"
  }
},

目前没有找到明确文档,只能参考其他标记和精灵资源尝试调整,但一直没解决问题。


可能的问题点及修复方案

1. source-layer 配置错误

tippecanoe转换GeoJson生成MBTiles时,默认的source-layer名称不是place。你可以用mbinfo命令查看starbucks.mbtiles的实际图层信息:

mbinfo starbucks.mbtiles

查看输出里的vector_layers字段,其中的id值就是正确的source-layer,把配置里的place替换成这个值即可。

2. 图标精灵资源未正确加载

配置中使用的park_11图标需要对应样式的精灵图(sprite)支持。检查styles.json根节点的sprite字段,确认其指向的精灵资源包含park_11这个图标;或者更换为你当前精灵资源中存在的图标名称。

3. 图层渲染顺序被覆盖

如果星巴克点图层的配置位置在区域地图图层之前,会被基础地图覆盖。把这个点图层的配置移到styles.json图层数组的末尾,确保它在最上层渲染。

4. 未设置有效缩放级别范围

如果没有指定minzoom和maxzoom,图层可能在当前缩放级别下不显示。可以在图层配置中添加合适的缩放范围:

"minzoom": 10,
"maxzoom": 20

具体数值根据你的starbucks.mbtiles实际包含的缩放级别调整(同样可以用mbinfo命令查看)。


内容的提问来源于stack exchange,提问作者Dumb Nerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:57:35