## 加载天地图
### 示例功能
本示例对接天地图服务,实现在三维场景中加载天地图,具体类型包括矢量、影像、地形,坐标系为 EPSG:4326,即 WGS-84 经纬度。
### 示例实现
本示例需要使用【include-cesium-local.js】开发库实现,关键接口为`CesiumZondy.Layer.ThirdPartyLayer`类提供的`appendTDTuMap()`方法,以此来加载天地图。
> 开发库使用请参见*首页-概述-原生 JS 调用*内容。
> 特别说明:根据天地图的要求,调用天地图 API 及服务接口都需要申请开发授权,获取服务许可(key)!本示例采用一个参考 key,实际使用需开发者自行申请。 友情链接:天地图官网申请 key
### 实现步骤
**Step 1. 引用开发库**:
本示例引用 local 本地【include-cesium-local.js】开发库,完成此步骤后才可调用三维 WebGL 的功能;
**Step 2. 创建布局**:
创建`id='GlobeView'`的 div 作为三维视图的容器,并设置其样式;
**Step 3. 构造三维场景控件**:
实例化`Cesium.WebSceneControl`对象,完成此步骤后可在三维场景中加载三维球控件;
- Example:
```javascript
//构造三维视图对象(视图容器div的id,三维视图设置参数)
var webGlobe = new Cesium.WebSceneControl('GlobeView', {})
```
**Step 4. 加载数据**:
加载数据:创建第三方数据图层类`CesiumZondy.Layer.ThirdPartyLayer`的对象,调用`appendTDTuMap()`方法,需配置 url 或 type(二选一设置即可)、token 参数,可实现矢量、影像、地形数据的加载。
(1) url 地址:可参考提供的 URL 示例
天地图经纬度数据:http://t0.tianditu.com/DataServer?T=vec_c&X={x}&Y={y}&L={l}
30 米全球地表覆盖数据服务:http://glcdata.tianditu.com/DataServer?T=glc_c&X={x}&Y={y}&L={l}
(2) token:请前往天地图官网申请自己的开发 token,示例自带 token 仅做功能演示;
(3) type 类型:可传入'vec'、'img'、'ter'等,分别代表矢量、影像、地形地图,具体请查看天地图官网。
- Example:
```javascript
//构造第三方图层对象
var thirdPartyLayer = new CesiumZondy.Layer.ThirdPartyLayer({
viewer: webGlobe.viewer,
})
//加载天地图
var tdtLayer = thirdPartyLayer.appendTDTuMap({
//天地图经纬度数据url,注意url与ptype设置其中一个即可
//url: 'http://t0.tianditu.com/DataServer?T=vec_c&X={x}&Y={y}&L={l}',
//开发token (请到天地图官网申请自己的开发token,自带token仅做功能验证随时可能失效)
token: '9c157e9585486c02edf817d2ecbc7752',
//地图类型,如'vec'矢量 'img'影像 'ter'地形
ptype: 'vec',
})
```
### 关键接口
#### 1.【三维场景控件类】`Cesium.WebSceneControl(elementId, options)`
| 参数名 | 类 型 | 说 明 |
| --------- | ----------------- | -------------------- |
| elementId | Element \| String | 放置视图的 div 的 id |
| options | Object | (可选)附加属性 |
- `options`属性主要参数
| 参数名 | 类 型 | 默认值 | 说 明 |
| ---------------- | ------- | ------ | -------------------------------------------------------------------------------------- |
| viewerMode | String | ‘3D’ | (可选)初始视图模式默认为三维球视图 '2D'表示二维视图 'COLUMBUS_VIEW' 表示三维平面视图 |
| showInfo | Boolean | false | (可选)是否显示默认的属性信息框 |
| animation | Boolean | true | (可选)默认动画控制不显示 |
| baseLayerPicker | Boolean | true | (可选)是否创建图层控制显示小组件 |
| fullscreenButton | Boolean | true | (可选)是否创建全屏控制按钮 |
| vrButton | Boolean | false | (可选)是否创建 VR 按钮 |
#### 2.【第三方数据图层类】`CesiumZondy.Layer.ThirdPartyLayer`
##### 【method】`appendTDTuMap(optionsParam) → {ImageryLayer}`:添加天地图(经纬度),返回瓦片层对象(ImageryLayer)
| 参数名 | 类 型 | 说 明 |
| ------------ | ------ | -------- |
| optionsParam | Object | 附加属性 |
- `optionsParam`属性主要参数
| 参数名 | 类 型 | 默认值 | 说 明 |
| ------ | ------ | ------ | ---------------------------------------------------------------------------------------------- |
| url | String | | (与 ptype 必选一个)地图数据 url 地址,具体请查看天地图官网 |
| ptype | String | | (与 url 必选一个)地图类型,矢量-'vec'、影像-'img'、地形-'ter',具体请查看天地图官网 |
| token | String | | (必选)开发 token (请到天地图官网申请自己的开发 token,自带 token 仅做功能验证随时可能失效) |