“使用纯背景时,使用“文本字段”需要样式“字形”属性”

问题描述 投票:0回答:3

我使用的是纯背景,而不是使用 MapBox 样式,按照这个答案

var map = new mapboxgl.Map({
    container: 'map',
    style: {
      version: 8,
      sources: {},
      layers: [
        {
          id: 'background',
          type: 'background',
          paint: {'background-color': 'white'}
        }
      ]
    }
});

我添加了一个

GeoJSON
点图层,我正在尝试对其进行标记:

'layout': {
  'text-field': ['get', 'name'],
  'text-font': ['Open Sans Semibold', 'Arial Unicode MS Bold'],
},

如果我对地图使用标准 MapBox 样式,则图层会被正确标记。但如果我使用前面提到的空白底图,该图层会返回错误:

使用“文本字段”需要样式“字形”属性

搜索这个错误信息表明我需要添加一个

glyphs
选项:

"glyphs":"mapbox://fonts/mapbox/{fontstack}/{range}.pbf"
"glyphs":"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"

但是,这些选项都无法阻止错误消息,并且该图层不会被标记。

使用空底图时,

glyphs
参数的正确语法是什么?

mapbox mapbox-gl-js
3个回答
3
投票

我将其复制到我的样式选项中,当我之前遇到与您相同的错误时,它运行良好,没有错误:

{
  "version": 8,
  "name": "Empty",
  "metadata": {
    "mapbox:autocomposite": true
  },
  "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf",
  "sources": {},
  "layers": [
    {
      "id": "background",
      "type": "background",
      "paint": {
        "background-color": "rgba(0,0,0,0)"
      }
    }
  ]
}

https://github.com/mapbox/mapbox-gl-styles/blob/master/styles/empty-v8.json


0
投票

作为解决方法,我在 MapBox Studio 中创建了一个新的空白样式并将其用作底图。此后,标签正确显示。

var map = new mapboxgl.Map({
  style: mapbox://styles/my-blank-map,
  ...
})

我仍然想知道是否有一种编程方式可以使用 MapBox GL-JS API 来完成此操作。


0
投票

当我不小心尝试将地图样式设置为

undefined
时,我遇到了此错误。当我修复错误并提供合法的
mapbox://
样式 URL 时,问题就消失了。

© www.soinside.com 2019 - 2024. All rights reserved.