'使用“文本字段”需要样式“glyphs”财产当使用纯色背景时

发布于 2025-01-13 09:34:07 字数 1066 浏览 0 评论 0原文

我使用的是纯背景,而不是使用 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 选项:

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

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

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

I'm using a plain background, rather than using a MapBox style, as per this answer

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

I've added a GeoJSON point layer and I'm trying to label it:

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

If I use a standard MapBox style for the map, the layer is correctly labelled. But if I use the aforementioned blank basemap, this layer returns the error:

use of "text-field" requires a style "glyphs" property

Searching this error message shows that I need to add a glyphs option:

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

However, neither of these options prevents the error message, and the layer is not labelled.

What is the correct syntax for the glyphs parameter when using an empty basemap?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

樱花坊 2025-01-20 09:34:07

我将其复制到我的样式选项中,当我以前遇到与您相同的错误时,它工作正常,没有错误:

{
  "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

I copied this for my style option and it worked fine with no errors when I previously had the same error as you:

{
  "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

大海や 2025-01-20 09:34:07

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

输入图片这里的描述

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

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

As a workaround, I created a new Blank style in MapBox Studio and used that as the basemap. After this, the labels appeared correctly.

enter image description here

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

I'd still like to know if there's a programmatic way to do this using the MapBox GL-JS API though.

复古式 2025-01-20 09:34:07

当我不小心尝试将地图的样式设置为未定义时,我遇到了此错误。当我修复了错误并提供了合法的 mapbox:// 样式 URL 后,问题就消失了。

I ran into this error when I accidentally attempted to set my map's style to undefined. The problem went away when I fixed the bug and instead provided a legitimate mapbox:// style URL.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文