Viewer 是 3D 地图查看器的核心类,提供了地图显示、相机控制、图层管理、场景渲染等功能。
参数:
containerId (string): 容器 DOM 元素的 IDoptions (ViewerOptions, 可选): 初始化配置选项示例:
| 属性名 | 类型 | 描述 |
|---|---|---|
app |
ViewerApp |
ViewerApp 实例 |
container |
HTMLDivElement |
场景容器 DOM 元素 |
renderer |
object |
渲染器对象,包含 domElement (HTMLCanvasElement) |
| 属性名 | 类型 | 描述 |
|---|---|---|
viewMode |
"2D" | "3D" |
视图模式 |
viewInfo |
object |
当前视图信息(heading, pitch, position) |
projectedViewRange |
object |
投影视图范围,包含坐标数组 |
fov |
number |
视野角度(Field of View) |
proj4 |
string |
Proj4 投影字符串 |
userDefinedProj4 |
string? |
用户自定义的 Proj4 字符串 |
| 属性名 | 类型 | 描述 |
|---|---|---|
camera |
object |
相机对象,包含 position、rotation、fov、aspect、type |
controlMode |
number |
控制模式 |
viewCollision |
boolean |
滚轮缩放防撞 |
| 属性名 | 类型 | 描述 |
|---|---|---|
sunLight |
boolean |
是否启用太阳光 |
isSunShadow |
boolean? |
是否启用太阳阴影 |
sunFlare |
boolean |
太阳耀光效果 |
sunIntensity |
number |
太阳光强度 |
envLightIntensity |
number |
环境光强度 |
useAdditionalEnvLight |
boolean |
是否使用额外的环境光 |
sceneDate |
Date |
场景日期时间 |
useSceneDate |
boolean |
是否使用场景日期 |
| 属性名 | 类型 | 描述 |
|---|---|---|
postProcessingManager |
object |
后处理管理器,详见下方 |
lut |
string? |
已废弃,被 postProcessingManager 取代 |
postProcessingManager 对象:
| 属性名 | 类型 | 描述 |
|---|---|---|
lut |
string? |
LUT 色彩查找表 |
lutIntensity |
number |
LUT 强度 |
brightness |
number |
亮度 |
contrast |
number |
对比度 |
saturation |
number |
饱和度 |
hue |
number |
色调 |
ACESFilmicToneMapping |
boolean |
ACES 色调映射 |
blooming |
boolean |
泛光效果 |
bloomingStrength |
number |
泛光强度 |
bloomingThreshold |
number |
泛光阈值 |
colorTemperature |
number |
色温调节 |
ao |
boolean |
环境光遮蔽(Ambient Occlusion) |
on |
function |
事件监听,如 on('LUTLoad', callback) |
| 属性名 | 类型 | 描述 |
|---|---|---|
terrainTransparency |
number |
地形透明度 (0-1) |
| 属性名 | 类型 | 描述 |
|---|---|---|
contourSetting |
object |
等高线配置对象 |
contourSetting.enabled |
boolean |
是否启用等高线 |
contourSetting.color |
number |
等高线颜色 |
contourSetting.lineWidth |
number |
线宽 |
contourSetting.contourInterval |
number |
等高线间隔 |
contourSetting.minHeight |
number |
最小高度 |
contourSetting.maxHeight |
number |
最大高度 |
| 属性名 | 类型 | 描述 |
|---|---|---|
identifyDrawing |
boolean |
是否识别绘制对象 |
identifyFeature |
boolean |
是否识别要素 |
rotationBoxControl |
boolean |
是否显示旋转控制盒 |
rotationBoxLocale |
LocaleName |
旋转控制盒语言 |
| 属性名 | 类型 | 描述 |
|---|---|---|
enableMapDisplayArea |
boolean |
是否启用地图显示区域限制 |
mapDisplayArea |
object |
地图显示区域配置 |
mapDisplayArea.coords |
[number, number] |
左上和右下坐标 |
mapDisplayArea.fromEPSG |
number | string |
坐标系 EPSG 代码 |
| 属性名 | 类型 | 描述 |
|---|---|---|
cloudBox |
CloudBoxSetting? |
云盒设置(getter/setter) |
cloud |
SceneCloudSetting? |
场景云设置(getter/setter) |
volumetricLighting |
VolumetricLightingSetting? |
体积光设置(getter/setter) |
| 属性名 | 类型 | 描述 |
|---|---|---|
baseMapUrls |
BaseMapUrl | BaseMapUrl[] |
底图 URL 配置(setter) |
baseMapUrls |
Array<{uuid, wrapper}> |
底图列表(getter) |
terrainUrl |
string | string[]? |
地形 URL(setter) |
terrainUrl |
string? |
地形 URL(getter) |
basemapScreenSpaceError |
number |
底图屏幕空间误差(LOD 控制) |
| 属性名 | 类型 | 描述 |
|---|---|---|
animations |
Record<string, any> |
动画集合 |
locale |
LocaleName |
语言设置 |
zoomTo(options: CameraPose): void快速跳转到指定相机位置(无动画)。
参数:
options (CameraPose): 相机姿态配置flyTo(options: CameraPose): void飞行到指定相机位置(带动画)。
参数:
options (CameraPose): 相机姿态配置flyToLookAt(options): void飞行并查看指定位置。
参数:
addPointcloudLayer(options: PointCloudLayerOptions): Promise<{id, layer}>添加点云图层。
返回: Promise,包含图层 ID 和图层对象
flyToPointcloudById(id: number | string): void飞行到指定点云图层。
setPointcloudOpacityById(id: number | string, opacity: number): void设置点云不透明度。
参数:
opacity: 0-1 之间的小数setPointcloudPointSizeById(id: number | string, size: number): void设置点云点大小。
setPointCloudColorScheme(id: number | string, scheme: PointCloudColorScheme): void设置点云颜色方案。
setPointCloudHeightRange(id: number | string, minHeight: number, maxHeight: number): void设置点云高度范围过滤。
setPointCloudIntensityRange(id: number | string, minIntensity: number, maxIntensity: number): void设置点云强度范围过滤。
add3DTilesLayer(options: Tiles3DLayerOptions): Promise<{id, layer}>添加 3D Tiles 图层。
返回: Promise,包含图层 ID 和图层对象
flyTo3DTilesById(id: number | string, options?): void飞行到指定 3D Tiles 图层。
参数:
set3DTilesOpacityById(id: number | string, opacity: number): void设置 3D Tiles 不透明度(0-1)。
set3DTilesVisibleById(id: number | string, visible: boolean): void设置 3D Tiles 可见性。
set3DTilesFeatureVisibleById(layerId: number | string, features: number[]): void设置 3D Tiles 指定要素的可见性。
set3DTilesNoFlattening(layerIds: (number | string)[], isNoFlatten: boolean): void设置 3D Tiles 是否不进行扁平化处理。
getIs3DTilesNoFlatteningById(layerId: number | string): boolean获取指定图层是否启用了不扁平化。
getNoFlatteningList(): (number | string)[]获取所有不扁平化的图层 ID 列表。
get3DTilesFeatureTree(layerId: number | string): any获取 3D Tiles 要素树结构。
setIs3DTilesRawFeatureTypesVisible(layerId, featureKeys, boolean): void设置 3D Tiles 原始要素类型的可见性。
flyTo3DTilesBBox(layerId: number | string, bbox: any): void飞行到 3D Tiles 的边界框。
clear3DTilesFeatureColorById(layerId: number): void清除 3D Tiles 要素颜色。
set3DTilesDefaultColorById(layerId: number, color: number, alpha: number): void设置 3D Tiles 默认颜色。
set3DTilesFeatureColorById(layerId: number, featureIds: number[], color: number, alpha: number): void设置 3D Tiles 指定要素的颜色。
getIs3DTilesWireframeById(layerId: number | string): boolean获取是否启用线框模式。
setIs3DTilesWireframeById(layerId: number | string, isWireframe: boolean): void设置 3D Tiles 线框模式。
setIs3DTilesUseEnvMap(layerId: number | string, isUseEnvMap: boolean): void设置 3D Tiles 是否使用环境贴图。
set3DTilesLoadStartEvent(layerId: number | string, callback: () => void): void设置 3D Tiles 加载开始事件回调。
set3DTilesLoadEvent(layerId: number | string, callback: () => void): void设置 3D Tiles 加载完成事件回调。
set3DTilesErrorTarget(layerId: number | string, val: number): void设置 3D Tiles 错误目标值(LOD 控制)。
addBaseMapLayer(value: BaseMapUrl, index: number): void在指定索引位置添加底图图层。
removeBaseMapLayer(index: number): void移除指定索引的底图图层。
moveUp(index: number): void提升瓦片地图的顺序(向上移动)。
moveDown(index: number): void降低瓦片地图的顺序(向下移动)。
getTileMap(): object | undefined获取瓦片地图对象。
返回:
updateTile(id, originalGeoJSON, modifiedGeoJSON, originalProj4, currentProj4): void更新瓦片数据。
getScreenCaptureRaw(): Promise<Blob>获取屏幕截图的原始数据。
返回: Promise
getScreenCapture(pictureName: string): void保存屏幕截图到文件。
startVideoRecord(): void开始视频录制。
stopVideoRecord(videoName: string): void停止视频录制并保存。
playOrbitAnimation(config?: Partial<OrbitAnimationConfig>): void播放环绕动画。
参数:
stopOrbitAnimation(): void停止环绕动画。
setSplatting(path, positionInfo, cb?): void设置高斯泼溅模型。
参数:
flyToSplatting(): void飞行到高斯泼溅模型。
setWeather(weather: Weather): void设置天气效果。
参数:
weather: "SUNNY" | "RAINY" | "FOGGY" | "SNOWY"getScale(): number获取当前比例尺。
getPositionLocal(): {x, y, z}获取当前本地坐标位置。
getCartographic(): [longitude, latitude]获取当前经纬度坐标。
setRotationBoxTopRight(config: {top?, right?}): void设置旋转控制盒的位置。
使用 on 方法监听事件:
identify要素识别事件。
回调参数: IdentifyData
bimFeatureTypeLoadBIM 要素类型加载完成事件。
回调参数:
json: Record<string, number[]> - 要素类型映射id: number - 图层 IDcameramove相机移动事件(普通精度)。
回调参数:
cameramoveprecise相机移动事件(高精度)。
回调参数: CameraPose
click鼠标点击事件。
回调参数:
move鼠标移动事件。
回调参数:
Viewer 构造函数的配置选项。
| 参数 | 类型 | 必需 | 默认值 | 描述 |
|---|---|---|---|---|
far |
number |
否 | - | 相机远裁剪面距离 |
proj4 |
string |
否 | - | Proj4 投影字符串 |
sunLight |
boolean |
否 | - | 是否启用太阳光 |
baseMapUrls |
BaseMapUrl | BaseMapUrl[] |
否 | - | 底图配置 |
terrainUrl |
string |
否 | - | 地形服务 URL |
isWebGL2 |
boolean |
否 | - | 是否使用 WebGL2 |
mapMaximumLevel |
number |
否 | - | 地图最大层级 |
licensingServiceUrl |
string |
否 | - | 许可服务 URL |
basemapScreenSpaceError |
number |
否 | - | 底图屏幕空间误差(LOD) |
viewCollision |
boolean |
否 | - | 滚轮缩放防撞 |
useSceneDate |
boolean |
否 | - | 是否使用场景日期 |
底图支持多种服务类型,可以是字符串 URL 或配置对象。
直接使用瓦片 URL 模板:
类型: TEMPLATEOptions
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
type |
"TEMPLATE" |
是 | 服务类型 |
url |
string |
是 | 瓦片 URL 模板 |
opacity |
number |
否 | 不透明度 (0-1) |
类型: WMSOptions
WMS (Web Map Service) 标准服务配置。
| 字段 | 类型 | 必需 | 默认值 | 描述 |
|---|---|---|---|---|
type |
"WMS" |
是 | - | 服务类型 |
url |
string |
是 | - | WMS 服务基础 URL |
version |
string |
是 | "1.3.0" |
WMS 版本号 |
layers |
string |
是 | "0" |
图层名称(逗号分隔) |
format |
string |
是 | "image/png" |
图像格式 |
styles |
string |
是 | "" |
图层样式 |
key |
string |
是 | "" |
API 密钥/令牌 |
opacity |
number |
否 | - | 不透明度 (0-1) |
示例:
类型: ArcGisMapServerOptions
ArcGIS 地图服务配置。
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
type |
"ArcGIS_MapService" |
是 | 服务类型 |
url |
string |
是 | ArcGIS MapServer URL |
format |
string |
是 | 图像格式(默认 "png8") |
epsg |
string |
是 | 坐标系 EPSG 代码 |
key |
string |
是 | API 密钥 |
示例:
类型: ArcGisFeatureServerOptions
ArcGIS 要素服务配置(支持矢量渲染)。
继承自: TileMapStyle
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
type |
"ArcGIS_FeatureService" |
是 | 服务类型 |
url |
string |
是 | ArcGIS FeatureServer URL |
epsg |
string |
否 | 坐标系 EPSG 代码 |
pointColor |
string |
否 | 点颜色 |
pointSize |
number |
否 | 点大小(像素) |
lineColor |
string |
否 | 线颜色 |
lineWidth |
number |
否 | 线宽(像素) |
fillColor |
string |
否 | 填充颜色 |
示例:
类型: WFSOptions
WFS (Web Feature Service) 标准服务配置。
继承自: TileMapStyle
| 字段 | 类型 | 必需 | 默认值 | 描述 |
|---|---|---|---|---|
type |
"WFS" |
是 | - | 服务类型 |
uuid |
string |
否 | - | 唯一标识符 |
url |
string |
是 | - | WFS 服务 URL |
version |
string |
是 | - | WFS 版本号 |
typeName |
string |
是 | - | 图层类型名称 |
outputFormat |
string |
是 | "GeoJSON" |
输出格式 |
key |
string |
否 | - | API 密钥 |
rule |
any |
否 | - | 样式规则 |
SLD |
SldObj |
否 | - | SLD 样式对象 |
fields |
string[] |
否 | - | 字段列表 |
text |
object |
否 | - | 文本样式配置 |
opacity |
number |
否 | - | 不透明度 (0-1) |
文本样式:
示例:
类型: GeoTwinFeatureTileServiceOptions
GeoTwin 专用的矢量瓦片服务,支持高性能渲染和复杂样式。
| 字段 | 类型 | 必需 | 默认值 | 描述 |
|---|---|---|---|---|
type |
"GeoTwin_FeatureTileService" |
是 | - | 服务类型 |
uuid |
string |
否 | - | 唯一标识符 |
url |
string |
是 | - | 服务 URL(不含 /{z}/{x}/{y}) |
token |
string |
否 | - | 访问令牌 |
format |
string | boolean |
否 | true |
响应格式(true=二进制,推荐) |
count |
number |
否 | - | 每个请求最大要素数 |
fields |
string[] |
是 | - | 字段列表(建议明确指定) |
rule |
GtFeatureTileStyleRule |
否 | - | 样式规则(将迁移到 SLD) |
SLD |
SldObj |
否 | - | SLD 样式对象 |
params |
Record<string, string|boolean> |
否 | - | 自定义请求参数 |
TEXTLAYER_OPTIONS |
object |
否 | - | 文本标注配置 |
clampToModel |
boolean |
否 | - | 是否贴合模型 |
highlight |
Highlight |
否 | - | 高亮配置 |
opacity |
number |
否 | - | 不透明度 (0-1) |
TEXTLAYER_OPTIONS:
高亮配置:
示例:
用于矢量图层的基础样式配置。
| 字段 | 类型 | 描述 |
|---|---|---|
pointColor |
string |
点颜色(6 位十六进制或 rgba 字符串) |
pointSize |
number |
点大小(像素) |
lineColor |
string |
线条颜色 |
lineWidth |
number |
线宽(像素) |
fillColor |
string |
填充颜色 |
graphicFill |
any |
图形填充 |
dashArray |
number[] |
虚线样式 |
用于 GeoTwin FeatureTileService 的高级样式规则。
classification: 分类规则,根据字段的不同值设置样式range: 范围规则,根据字段值的范围设置样式gradient: 渐变规则,根据字段值设置渐变颜色histogram3D: 三维柱状图| 字段 | 类型 | 描述 |
|---|---|---|
type |
GtFeatureTileStyleRuleType |
规则类型 |
property |
string |
属性字段名 |
material |
string |
材质 |
baseHeight |
string | number |
基础高度 |
topHeight |
string | number |
顶部高度 |
styles |
GtFeatureTileStyleRuleStyle[] |
样式数组 |
sideTexture |
SideTexture |
侧面纹理 |
style |
object |
样式配置(用于渐变等) |
支持非常丰富的样式选项,包括:
点样式:
pointColor: 点颜色pointRadius: 点半径text: 文本样式IconMarker: 图标标记TextMarker: 文本标记GLTFModelJson: 3D 模型SectorScanJson: 扇形扫描效果线样式:
lineColor: 线条颜色lineWidth: 线宽lineJoin: 连接样式("round" | "bevel" | "miter")lineCap: 端点样式("round" | "butt" | "square")dashArray: 虚线数组GlowLineJson: 发光线条TraceLineJson: 轨迹线条HorizontalDynamicFenceJson: 水平动态围栏面样式:
fillColor: 填充颜色graphicFill: 图形填充(支持线条填充等)GenericDrawPolygon: 通用面绘制示例:分类样式
示例:渐变样式
示例:3D 柱状图
示例:图标标记
示例:3D 模型标记
示例:发光线条
包含:
x, y, z: 位置坐标heading: 航向角(度)pitch: 俯仰角(度)roll: 滚转角(度,可选)epsg: 坐标系(可选)识别事件返回的数据类型,可以是以下几种之一:
baseMapUrls 数组中,越靠前的底图层级越低(在下层)viewer.lut 已废弃,请使用 viewer.postProcessingManager.lutproj4 配置)basemapScreenSpaceError 和 set3DTilesErrorTarget 控制 LOD,平衡性能和质量format: true)以获得最佳性能fields 列表,避免遗漏或加载不必要的数据rule 将逐步迁移到 SLD 对象