SuperMap iClient3D for WebGL/WebGPU
主要介绍 SuperMap iClient3D for WebGL/WebGPU的入门用法,详细的接口参数请参考 API页面。
准备
获取 SuperMap iClient3D for WebGL/WebGPU
开发时需要引入SuperMap iClient3D for WebGL/WebGPU。其中包括必备的CSS 文件和 JS 文件。你可以通过以下几种方式获取:
SuperMap iClient3D for WebGL/WebGPU
- 通过 官网 下载最新版本
引入
文件方式引入
将获取版本解压缩后,在examples/Webgl文件夹下新建HTML文件, 在文件中通过<script> 标签将SuperMap3D.js文件引入:
同时应该根据需要在 <head> 标签中引入的其他css文件和js文件,如下:
创建三维场景
初始化三维球
在准备章节,已经新建了一个 HTML 页面,在页面中继续添加代码以初始化三维球,如下:
设置地图风格
在初始化时,三维球上可以叠加本地图片作为影像:
运行效果
引用在线地图:SuperMap iClient3D for WebGL 对多种互联网地图信息进行了封装, 例如BingMap、天地图等,并分别为其提供了影像添加接口
BingMapsImageryProvider
和TiandituImageryProvider
添加BingMap影像作为底图:
运行效果
添加天地图作为底图:
运行效果
添加图层
SuperMap iClient3D for WebGL/WebGPU 提供多种接口,支持在创建好的三维场景中添加种类丰富的数据图层。在此以添加地形图层为例介绍使用WebGPU方式加载的方法
添加地形图层:
(1)选择使用WebGL方式加载(默认WebGL2):
(2)选择使用WebGPU方式加载:
添加影像图层:
添加S3M图层:对于在SuperMap iServer上发布的S3M服务,可以通过以下两种方式打开。
(1).通过open接口将整个场景打开,这种方法简单易操作且不易出现遗漏图层的情况
(2).通过addS3MTilesLayerByScp
接口进行添加,该方式的优势是,可以根据自己的需要选择部分图层添加到场景中,提高加载性能,但需要加载多图层的整个场景时,不如scene.open方便。
添加MVT图层:在SuperMap桌面产品中将地图生成好的矢量瓦片地图通过SuperMap iServer发布成矢量瓦片或三维服务后, 在WebGL中利用接口addVectorTilesMap将MVT图层服务添加到场景中。
场景设置
SuperMap iClient3D for WebGL提供了多种接口,方便用户对场景进行个性化设置。
颜色设置
SuperMap iClient3D for WebGL支持对场景的颜色进行设置:
泛光效果设置
SuperMap iClient3D for WebGL支持在场景中开启泛光,并支持对泛光效果进行设置
分屏显示
支持对场景进行分屏显示,在不同的视口中对场景中的数据进行不同的操作,目前SuperMap iClient3D for WebGL支持 设置“NONE”、“HORIZONTAL”、“TRIPLE”、“VERTICAL”、“VerticalTrisection”和“QUAD”等11种模式。
场景出图
SuperMap iClient3D for WebGL支持在浏览器中将指定场景的某一角度作为图片保存至本地。具体方法为:
查询
空间查询
SuperMap iClient3D for WebGL提供了丰富的接口,支持场景模型的空间位置信息查询和GPU空间查询等功能。
空间位置信息查询:实时获取鼠标点击位置的空间信息。
GPU空间查询:在场景中创建查询对象,通过GPU空间分析,获取查询对象与模型或模型子对象的空间关系。目前查询对象支持GeoCone、 GeoBox、GeoCylinder、GeoEllipsoid和GeoSphere等几类。示例代码如下:
运行效果
属性查询
属性查询是指在场景中对S3M模型的图层或对象属性进行查询
量算
SuperMap iClient3D for WebGL提供了量算功能,支持在前端对地形或S3M模型进行距离、面积和高差等指标的实时量算, 并支持贴地距离和贴地面积的量算。
下列代码展示距离量算的方法:
运行效果
绘制
SuperMap iClient3D for WebGL支持在前端实时进行点、线、面的绘制。
下列代码展示在前端绘制线的方法:
三维空间分析
SuperMap iClient3D for WebGL支持对三维场景进行一系列的空间分析。
通视分析
通视分析是指对场景中的指定两个点之间的通视性进行分析,具体步骤如下:
(1).打开三维场景或添加三维图层,此步骤可参考 “添加图层”中的"叠加S3M图层。
(2).将获取的点位坐标转为经纬度坐标,进行通视分析。
(3).添加观察点和目标点,进行通视分析。
可视域分析
可视域分析是指在三维场景中,基于指定观察点,对一定视域内对象的可见性进行分析。主要步骤有:
(1).打开三维场景。
(2).创建可视域分析对象,并指定可视区域和不可视区域的显示样式:
(3).设置视口位置:
(4).以观察者位置(视口位置点)为球心,在场景中拾取一个点,将以观察者位置与该点的连线为半径绘制三维的可视域:
(5).进行可视域分析:
阴影分析
阴影分析是指对场景中指定区域在指定时间段内的阴影率进行分析。主要步骤有:
(1).打开三维场景。值得注意的是在创建Viewer时,应将阴影开启,确保阴影可用:
(2).创建阴影查询对象,并设置图层的阴影模式:
(3).绘制阴影分析区域:
(4).阴影分析完成后,还可以获取分析区域内空间位置上的阴影率:
(5).执行阴影分析:
天际线分析
天际线分析是指对三维场景的天际线进行绘制和分析。主要步骤有:
(1).打开三维场景。
(2).创建天际线分析对象:
(3).为使结果直观,将当前相机位置设置为天际线分析的视口:
(4).执行天际线分析:
(5).提取二维天际线:
(6).此外,SuperMap iClient3D for WebGL还支持绘制限高体以辅助规划和建设部门的决策。 限高体的含义是在当前视口下,为保持当前的天际线不变,在指定区域内修建的建筑高度不能超过该限高体的高度,其绘制方法如下: