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

tileserver-gl+maplibre部署后,伊朗、伊拉克地图无标签问题求助

解决非拉丁文地图无标签显示问题(伊朗/伊拉克 vs 美国)

以下是针对你遇到的美国地图有标签、伊朗/伊拉克无标签问题的排查和解决步骤:

1. 检查字体支持

默认的osm-bright和klokantech-basic样式仅包含拉丁文字体,缺少阿拉伯文、波斯文的字形文件。

  • 确认tileserver-gl的fonts目录中是否有支持阿拉伯文的Noto Sans Arabic或波斯文的Noto Sans Persian字体(需为maplibre兼容的.pbf格式)。
  • 若没有,使用fontnik工具将对应TTF/OTF字体转换为.pbf格式,放入fonts目录后重启tileserver服务。

2. 修正Tilemaker的标签提取配置

Tilemaker默认配置可能只抓取了name字段的拉丁文内容,未包含本地语言标签:

  • 打开Tilemaker的config.json,在tags的include列表中添加name:ar(阿拉伯文)、name:fa(波斯文)字段,示例:
    "tags": {
      "include": ["name", "name:en", "name:ar", "name:fa", "highway", "waterway", ...]
    }
    
  • 重新运行Tilemaker生成瓦片,替换原有瓦片后重启服务。

3. 调整样式文件的文本字段优先级

默认样式可能强制使用英文标签,需修改为优先显示本地语言:

  • 打开样式文件(如osm-bright.json),找到所有文本图层的text-field配置,替换为优先调用本地语言标签:
    针对伊拉克(阿拉伯文):
    "text-field": ["coalesce", ["get", "name:ar"], ["get", "name"]]
    
    针对伊朗(波斯文):
    "text-field": ["coalesce", ["get", "name:fa"], ["get", "name"]]
    
    或通过国家代码动态匹配:
    "text-field": [
      "match",
      ["get", "iso_a3"],
      "IRQ", ["get", "name:ar"],
      "IRN", ["get", "name:fa"],
      ["get", "name"]
    ]
    

4. 启用RTL文本渲染

阿拉伯文、波斯文是从右到左的语言,需开启RTL渲染支持:

  • 在样式的文本图层中添加配置:
    "text-rtl": true
    

内容的提问来源于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 11:27:07