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

使用MapLibre GL JS本地发布瓦片无地图标签问题排查

解决波斯语(非拉丁)地图标签不显示问题

可能原因及对应解决方案:

  • 字体不支持波斯语字符
    Open Sans默认不包含波斯语(阿拉伯语系)的字形,osm-bright样式指定的字体无法渲染波斯语标签。

    • 替换为支持波斯语的字体:比如Vazirmatn、Noto Sans Arabic这类专门适配中东语言的字体。
    • 操作步骤:
      1. 把支持波斯语的字体文件放到tileserver-gl的fonts目录下。
      2. 修改osm-bright样式的font-stack配置,将Open Sans替换为Vazirmatn, Open Sans(优先用Vazirmatn渲染波斯语)。
      3. 同步修改Maplibre客户端的样式引用,确保字体加载路径正确。
  • Tilemaker未导出波斯语标签字段
    检查tilemaker的配置文件,确认是否把波斯语标签字段(如name:fa)包含到输出瓦片的属性中。

    • 操作步骤:
      1. 打开tilemaker的config.json,在标签类图层(比如places、roads)的properties配置里,添加name:fa字段作为name属性的优先来源:
        "properties": {
          "name": ["name:fa", "name"]
        }
        
      2. 重新用tilemaker生成mbtiles文件,再转成pmtiles发布。
  • 未开启RTL文本渲染支持
    波斯语是从右到左(RTL)的语言,osm-bright默认样式可能没有开启RTL渲染,导致标签无法正确显示。

    • 操作步骤:在Maplibre的样式配置中,给标签图层添加text-rtl: true的布局属性:
      {
        "id": "place-label",
        "type": "symbol",
        "layout": {
          "text-field": ["get", "name"],
          "text-rtl": true
        }
      }
      
  • PMtiles转换时过滤了标签字段
    确认protomaps/go-pmtiles转换过程中,没有使用过滤参数排除标签相关属性。

    • 操作步骤:检查pmtiles convert命令,确保没有添加--filter选项来排除name或name:fa字段,重新转换发布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:32:15