javascript - 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 系列,更深入地介绍了这一点。这里有一些与您的问题非常相关的帖子。