正如您所提到的,“层”是一个来自更广泛范围的概念,而不仅仅是Leaflet实现。
它是地理空间数据上下文中“收集”的抽象概念。层也是一个替代名称,但我看到在几种标准和技术中更多地使用“层”
。
这里的第一行描述它足够简单:
https ://doc.arcgis.com/en/arcgis-online/reference/layers.htm
在Leaflet的上下文中,您可以拥有任意数量的层,并且没有必要“备用”它们。
除了考虑技术实现的优化之外,我还努力尝试将“层”(根据您的业务领域)识别为属于一起的地理空间数据的逻辑组。
具体来说L.GeoJSON.addGeoJSON(geojson)
,它读取创建的每个新多边形都放置在自己的图层中(然后可能与您调用该方法的图层合并?)。
- 一个 Leaflet 层 => 一个 GeoJSON 特征(或一组特征,假设为
FeatureCollection
extends Feature
)。
- 不会有合并:当您添加 GeoJSON 数据时,Leaflet将用新生成的地理空间数据替换整个图层。自定义实现可能可以合并,但我不知道是否可取。
我的用例是我需要一次添加许多 geoJSON 对象,并希望确保我不会创建许多不必要的层(或者如果我是,如果这实际上是一件坏事)。
有很多层次本身并不是一件坏事;只要不出现具体的性能问题。
如果您想减少层数,请努力对 GeoJSON 的结构进行建模,以便大多数相关对象包含在单个 GeoJSON/Layer(按域分组)中,而不是为每个单独的对象设置一个层(按技术实现分组)。
例如与“风险区域”相关的层
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"title": "virus spread area",
"risk": "high"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
114.521484375,
30.89279747750818
],
[
113.89251708984374,
30.64972717137329
],
[
114.28253173828124,
30.21635515266855
],
[
114.521484375,
30.89279747750818
]
]
]
}
},
{
"type": "Feature",
"properties": {
"name": "Wuhan Institute of Virology",
"risk": "high"
},
"geometry": {
"type": "Point",
"coordinates": [
114.35462951660156,
30.543338954230222
]
}
}
]
}
而不是为多边形设置一层:
{
"type": "Feature",
"properties": {
"title": "virus spread area",
"risk": "high"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
114.521484375,
30.89279747750818
],
[
113.89251708984374,
30.64972717137329
],
[
114.28253173828124,
30.21635515266855
],
[
114.521484375,
30.89279747750818
]
]
]
}
}
和一个单独的(但实际上相关的)Point:
{
"type": "Feature",
"properties": {
"name": "Wuhan Institute of Virology",
"risk": "high"
},
"geometry": {
"type": "Point",
"coordinates": [
114.35462951660156,
30.543338954230222
]
}
}
(恕我直言)两个特征在概念上属于同一层。