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

Ste*_*ead 5 mapbox mapbox-gl-js

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

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

我添加了一个GeoJSON点图层并尝试对其进行标记:

'layout': {
  'text-field': ['get', 'name'],
  'text-font': ['Open Sans Semibold', 'Arial Unicode MS Bold'],
},
Run Code Online (Sandbox Code Playgroud)

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

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

搜索此错误消息表明我需要添加一个glyphs选项:

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

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

glyphs使用空底图时参数的正确语法是什么?

Ste*_*ead 0

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

在此输入图像描述

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

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