EarthViewer

EarthViewer

EarthViewer 三维场景控件。用于显示地球坐标或者直角坐标的三维场景,包括动态图层,粒子系统等,是开发三维应用的首要控件。
基类: UserControl

Members

绘制完成后发出
绘制开始前发出
点击选中物体时发出
拖动结束消息
拖动鼠标移动消息
拖动开始
鼠标移动到物体表面时发出
鼠标移出到物体表面时发出

onMouseLeftButtonDoubleClick : Observable<MouseButtonEventArgs>

鼠标左键双击发出

onMouseRightButtonDoubleClick : Observable<MouseButtonEventArgs>

鼠标右键双击发出
屏幕跟踪操作完成时发出
物体失去选中焦点时发出

axisArrowRatio : number

坐标轴箭头大小比例

axisColor : Color

坐标轴颜色

axisLength : number

坐标轴长度米

backgroundColor : Color

三维场景背景色

globeColor : Color

地球缺省背景颜色

isActive : boolean

是否处于活动状态

isAnimation : boolean

设为动画模式,会保持连续重画

isAxisVisible : boolean

三维直角坐标模式下是否显示坐标轴

isAxisYZReverse : boolean

是否调换YZ坐标轴

isEarthCoord : boolean

是否是地球坐标。设置false时,为三维直角坐标模式

isEnableMouseOverPick : boolean

是否允许鼠标移过物体表面时选择

isFogEnabled : boolean

是否开启雾效

isFpsVisible : boolean

是否在状态栏显示FPS

isHighlightPickedObject : boolean

是否高亮显示选中对象

isNorthPointerVisible : boolean

是否显示指北针

isPickable : boolean

是否允许选择

isRotationCenterVisible : boolean

是否显示直角坐标模式下的旋转中心

isSkyVisible : boolean

是否显示天空。缺省情况下,地球模式显示,直角坐标模式不显示

isStatusBarVisible : boolean

是否显示底部信息工具条

isTerrainVisible : boolean

是否已经显示地形

maxTerrainLevel : number

最大地形显示层级

minTerrainLevel : number

最小使用地形的层级,缺省为4

readonly camera : Camera

相机对象

readonly clientRect : Rect

场景屏幕区域

readonly coordSystem : ICoordSystem3

三维坐标对象

readonly depthView : DepthView

深度纹理视图

readonly elevationView : ElevationView

地形高程视图,用于获取高程纹理,颜色纹理等,通常用于Gpu计算

readonly engine : Engine

引擎对象,负责所有的基础三维渲染和计算

readonly globalScene : Scene

全局Scene对象,通常用于创建Babylon材质比较方便

readonly graphics : Graphics3

图形设备对象

readonly hasMouseButtonDown : boolean

是否有鼠标键按下

readonly imageProviders : NameObjectList<IImageProvider>

瓦片层数据集合,可以添加叠加多个瓦片影像层

readonly isNeedRedraw : boolean

系统保留

readonly layers : Layer3Collection

场景中所有图层集合

readonly mousePosition : Vector3

鼠标地球坐标

readonly night : DarkLightSystem

EarthViewer内置夜晚暗光系统,用于方便开发昼夜切换功能。根据hours自动控制跟阳光系统的关系,自动点亮灯光,跟阳光系统使用相同的图层集合。使用night属性后,sunLight会自动启动和关闭。

readonly renderContext : RenderContext3

显示上下文

readonly terrainCalculator : ITerrainCalculator

地形计算接口

readonly terrainColorSetting : TerrainColorSetting

地形高程设色属性对象

readonly terrainLayer : TerrainLayer

地形图层。这是需要获取,并不包含在layers中。通常用于分析视图使用

readonly terrainProviders : NameObjectList<ITerrainProvider>

地形层数据集合,可以添加叠加多个地形数据层。范围小的地形尽量添加在靠后的位置

refreshRate : number

用于大数据场景下的性能优化,表示动画时每隔几帧刷新画面,必须为整数值。比如2,则为30fps。缺省未设置,为60fps。通常水面动画可以设置为2,如果是模型动画或者例子系统,降低帧率会影响效果。该值可以根据画面内容动态设置。

splitPosition : number

卷帘对比的分隔位置 0-1, 0为左侧

terrainExaggeration : number

地形拉伸(夸张)的比例系数。如果动态改变该值,只有重新调用open之后才会起作用

Methods

constructor(htmlUI,fatherUI)

创建一个新的EarthViewer
Name Type Description
htmlUI string | HTMLDivElement 容纳EarthViewer的HTMLDivElement的id字符串或者对象本身
fatherUI UIElement optional用于嵌套系统界面布局,通常不需要使用

addGroundHole(polygonPoints) → boolean

添加地面孔洞对象。通常用于地面坑道开挖显示
Name Type Description
polygonPoints Vector3[] 孔洞多边形点数组

addGroundLayer(layer) → boolean

添加用户自定义地形计算图层。一般使用倾斜摄影图层
Name Type Description
layer Layer3

addPicked(geoObject)

添加选中对象
Name Type Description
geoObject GeoObject3

clearGroundHoles()

清除所有地面孔洞对象

clearGroundLayers()

清除所有自定义地形计算图层

clearLowerTerrain()

清除地形降低范围

clearPicked()

清除选中对象

clearTrackerResult()

清除屏幕跟踪结果

dispose()

删除并释放EarthViewer对象

getPicked() → Array<GeoObject3>

获取选中对象集合

hasAltKeyDown() → boolean

是否有alt键按下@returns

hasControlKeyDown() → boolean

是否有ctrl键按下@returns

hasShiftKeyDown() → boolean

是否有shift键按下@returns

init(options)

创建EarthViewer之后必须首先调用此方法。自4.0版以后自动启用WebGPU渲染, 如果需要强制使用gl渲染模式,需要传入{gpu:false},或者使用Setting.Gpu=false控制
Name Type Description
options IEarthViewerInitOptions optional初始化参数,可选

open(imageProvider,terrainProvider) → Promise<EarthViewer>

打背景影像和地形
Name Type Description
imageProvider IImageProvider optional瓦片数据提供对象。如不提供,缺省打开Bing或者天地图
terrainProvider ITerrainProvider optional地形数据提供对象。如不提供,则地表保持基准高度

openStyleMap(styleUrl) → StyleMap

通过指定的url加载Maplibre style文件到当前三维场景,其中线面层以及沿线标注叠加绘制到三维地形上,点状标注为三维立体绘制。返回的StyleMap对象等同于maplibrejs的map对象。三维场景中只能绘制一个style map,如果用新的url再次调用该方法时,将会关闭和释放当前map。drawsee在融合代码的过程中,保留了与style数据模型操作有关的api,去除了与场景显示和交互操作的部分,留下的方法、消息以及类名称与原api完全相同。具体调用方法请参考maplibrejs的相关文档。在drawsee库中,所有的maplibrejs类名称和全局函数名称使用Mpl模块前缀,比如 let p = new Mpl.Point(0,0)map中图层显隐,绘制参数,动态添加数据源、图层等,都可以通过原生api实现。drawsee只负责渲染
Name Type Description
styleUrl string style文件url

pick(screenX,screenY,resultPosition) → GeoObject3

使用屏幕坐标点选择一个对象
Name Type Description
screenX number 屏幕x坐标
screenY number 屏幕y坐标
resultPosition Vector3 optional保存选中对象表面的坐标

redraw()

显式激发三维场景重画

restoreDefaultFogParams()

恢复系统缺省雾气设置

setCurrentTool(tool,callerInfo)

设置当前操作类型,可以传入一个激发对象的唯一标示callerInfo
Name Type Description
tool EarthToolType 操作类型
callerInfo any optional调用者的标示,可以使用字符串。这样在trackerCompleted回调函数参数里,可以区分不同的调用者

setFogParams(fogStart,fogEnd,fogColor)

设置雾气效果
Name Type Description
fogStart number 雾气开始距离米
fogEnd number 雾气达到最大浓度距离米
fogColor Color optional雾气颜色,仅rgb有效

setLowerTerrain(points,lowerMeters)

降低指定范围的地形,以便配合倾斜摄影等的显示。系统仅仅是调整内部DepthBuffer控制深度裁剪,视觉显示高度并不变化。
Name Type Description
points Array<Vector2> | Array<Vector3> 二维或者三维点数组指定的多边形范围
lowerMeters number 米数,负值为降低

staticCaptureScreenshot(earthViewer) → HTMLImageElement

将EarthViewer当前显示的三维场景截屏到Image控件,以便保存为图像数据
Name Type Description
earthViewer EarthViewer