先来看一下EarthSDK和原生Cesium的关系,引用自简书-vtxf博主
从官方链接下载的项目结构如下
Apps: 为官方提供EarthSDK官方案例和demo的源码信息;
XbsjCesium: 集成了原生Cesium.js ,用户可以根据需要切换cesium.js的版本;
XbsjEarth: 这是EarthSDK的核心,源代码经过webpack混淆压缩,很难修改,如果需要获取源码,需要官方渠道购买;
XbsjEarth-Plugins: 属于官方提供的几个demo插件, 作为参照可以开发自己的插件,但是资料很少,比较鸡肋;
XbsjEarthUI: 这是EarthSDK官方提供的一套UI库,也是经过混淆压缩,改造需要研究;
今天我们就使用XbsjEarthUI,创建自己的第一个GIS应用。
我直接使用Apps/Demos/Viewer作为我的主场景,再把XbsjCesium、XbsjEarth、XbsjEarthUI 引入。
关于服务,我使用的node, 安装依赖的库文件。因为比较基础,就不多说了,项目结构如下
看一下运行起来的效果
几个重点说一下:
1. XbsjEarthUI.create('main') 完成UI创建后,Cesium原生的信息才完成导入;
2. 如果希望使用Cesium原生官方的数据,比如世界地形,需要有Cesium的授权,这时候可以设置授权token
Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1......"
3. viewer对象通过viewer = earthUI.earth.czm.viewer导出,可以像在Cesium项目中一样使用Viewer对象了;
4. 加载Cesium官方的地形服务,
viewer.terrainProvider = Cesium.createWorldTerrain();
5. 至此可以使用EarthSDK,也可以利用Cesium原生API开发自己的应用了;
6. 文章重点是EarthSDK, 其加载数据的方式有两种,通过JSON结构创建对象,也可以根据封装的对象动态创建对象。
7. EarthSDK提供一个“场景树”对象,挂载所有的模型、地图服务等对象。EarthSDK中,所有的对象都是一个czmObject。