MapBox中的Source,Layer和Tileset有什么区别?

问题描述

我目前正在浏览一段使用MapBox GL JS并具有如下所示的addSource()函数代码

this.mapAdapter.map.addSource(`${this.asset.uuid}-data`,{
        type: 'geojson',data: this.getMapBoxGeometry(),})

和另一个如下所示的addLayer()函数

this.mapAdapter.map.addLayer({
        id: `${this.asset.uuid}-polygon`,type: 'fill',source: `${this.asset.uuid}-data`,filter: ['==','$type','polygon'],}

我想知道源和图层之间的区别是什么。我似乎找不到合适的清晰定义。

特征收集的代码如下

 type: 'FeatureCollection',features: [
    {
      type: 'Feature',properties: {},geometry: {
        type: 'polygon',...}

图层是否以某种方式与要素集合相关?

图块集是源的另一个名称还是完全不同?

解决方法

我想知道源和层之间的区别是什么。我似乎找不到合适的明确定义。

当我开始学习 Mapbox 时,我在试图理解源、图层、日期集、图块集、样式等之间的差异时遇到了非常相似的挣扎。 Mapbox 提供了多少内容以及他们拥有多少文档真是太棒了,但很容易在噪音中迷失方向。

我认为是我地图的迷你数据存储,图层是源的可视化表示。添加源告诉 Mapbox “嘿,这是一个包含或更多可以添加到地图的图层的数据存储”。当您向地图添加图层时,您将其指向源并告诉 Mapbox 如何在地图上表示源。

将源添加到地图后,您可以使用它创建任意数量的图层。例如,如果我添加一个包含城市公园的源,我可以从该单个源创建以下三个图层。

  • 将公园边界表示为阴影多边形的 fill
  • 将边界表示为轮廓的 line
  • 将公园名称显示为文本标签的 symbol 图层

我写了一个 Mapbox 和 React Deep Dives 系列,更深入地介绍了这一点。以下是一些与您的问题非常相关的帖子。

,

来源和图层在Mapbox-GL样式规范中定义:https://docs.mapbox.com/mapbox-gl-js/style-spec/

简而言之:源定义数据的来源,层定义源的显示方式。

图层是否以某种方式与要素集合相关?

不是真的。

图块集是源的别称还是完全不同?

矢量图块集是一种类型的源。 GeoJSON来源(例如您在此处使用的来源)是另一个来源。