Skip to content

图层架构

本文档涵盖 OpenLayers 中的图层架构,包括不同的图层类型(Vector、Tile、Image、WebGL)以及它们如何与渲染系统集成。图层充当数据源和渲染管线之间的桥梁,组织地理空间内容以进行显示。

关于协调图层的中央 Map 组件的信息,请参阅 地图组件。关于为图层提供数据的数据源的详细信息,请参阅 数据源系统。关于图层集成的渲染管线的详细信息,请参阅 渲染系统

Layer Type Hierarchy

OpenLayers supports several layer types, each optimized for different types of geospatial data and rendering requirements. The layer types form a hierarchy that determines their rendering behavior and data handling capabilities.

SVG
100%

Layer Type Characteristics:

Layer TypeData FormatRendering MethodUse Cases
VectorLayerFeatures with geometriesCanvas 2D drawingInteractive features, editing
TileLayerPre-rendered image tilesCanvas image drawingBase maps, raster overlays
ImageLayerSingle imagesCanvas image drawingWMS, static imagery
VectorTileLayerTiled vector dataCanvas 2D or pre-renderedScalable vector maps
VectorImageLayerVector rendered to imageCanvas image drawingPerformance optimization
WebGLLayerAny, GPU processedWebGL shadersLarge datasets, effects

渲染器架构

每种图层类型都配有一个相应的渲染器,用于处理实际的绘图操作。渲染器架构遵循分层模式,具有共享的基础功能和专门的实现。

SVG
100%

核心渲染器职责:

  • LayerRenderer: 定义 prepareFrame()renderFrame() 和命中检测方法的抽象接口
  • CanvasLayerRenderer: Canvas 上下文管理、变换计算、容器准备
  • 专门渲染器: 特定于图层类型的渲染逻辑和优化

图层-渲染器集成管线

图层渲染过程遵循一致的管线,与 Map 的帧渲染周期集成。每个渲染器根据其图层类型的要求实现此管线。

SVG
100%

管线阶段:

  1. 准备 (src/ol/renderer/Layer.js90-92): 确定图层是否准备好渲染
  2. 帧设置 (src/ol/renderer/canvas/Layer.js252-287): 配置画布变换和裁剪
  3. 内容渲染: 特定于图层的绘图操作
  4. 清理 (src/ol/renderer/canvas/Layer.js326-331): 分发事件并完成渲染

瓦片图层实现

CanvasTileLayerRenderer 实现了复杂的瓦片管理,包括缓存、替代缩放级别处理和瓦片金字塔的高效渲染。

SVG
100%

关键瓦片渲染功能:

矢量图层实现

CanvasVectorLayerRenderer 处理基于要素的渲染,支持样式化、命中检测和全球投影的世界环绕。

SVG
100%

矢量渲染管线:

  1. 要素加载 (src/ol/renderer/canvas/VectorLayer.js676-690): 对视图范围内的要素进行空间查询
  2. 样式应用 (src/ol/renderer/canvas/VectorLayer.js700-718): 应用要素或图层样式
  3. 指令构建 (src/ol/renderer/canvas/VectorLayer.js666-671): 将要素转换为绘图指令
  4. 渲染执行 (src/ol/renderer/canvas/VectorLayer.js221-236): 使用世界环绕执行指令

矢量瓦片图层实现

CanvasVectorTileLayerRenderer 结合了基于瓦片的加载和矢量渲染,支持每个渲染瓦片的多个源瓦片和高效缓存。

SVG
100%

矢量瓦片渲染功能:

图层与地图渲染集成

图层通过 LayerRenderer 接口与 Map 的渲染系统集成,参与帧渲染周期和坐标变换。

SVG
100%

集成点: