|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215 | # 基础 API 🌎
## DC.Viewer
> 3D 场景主要接口,在给定的 DivId 中构建三维场景
### example
```html
<div id="viewer-container"></div>
```
```js
let viewer = DC.Viewer('viewer-container')
global.viewer = viewer // 添加到全局变量
```
:::warning
如果开发使用的是 Vue 这样的 MVVM 框架,不要将 viewer、layer、overlay 添加到数据模型中。由于 3D
场景中会不停的刷新每一帧,如果将数据添加到数据模型中,长时间的话会导致浏览器的压力增大而奔溃。
:::
### creation
- **_constructor(container,[options])_**
  构造函数
  - 参数
    - `{String | Cesium.Viewer } container`:容器
    - `{Object} options`:属性
  - 返回值 `viewer`
```js
//属性参数(可选)
const config = {
  contextOptions: {
    webgl: {
      alpha: false, // 背景缓冲区是否包含 alpha 通道
      depth: true,  // 开启深度缓冲区(通常必须开启,否则无法正确遮挡)
      stencil: true, // 是否启用模板缓冲。false 可以节省显存和性能
      antialias: true, // 是否启用抗锯齿
      powerPreference: 'high-performance', // 提示浏览器优先用独显或性能更高的 GPU
      premultipliedAlpha: true, // 颜色预乘 alpha,
      preserveDrawingBuffer: false, // 渲染后是否保留缓冲内容。false 性能更好,但不能直接保存截图
      failIfMajorPerformanceCaveat: false, // 避免低性能环境直接报错
    },
    allowTextureFilterAnisotropic: true, // 启用各向异性纹理过滤,提高贴图锐度
  },
  sceneMode: 3, //1: 2.5D,2: 2D,3: 3D
  enableEventPropagation: false, //是否开启鼠标事件冒泡
  enableMouseMovePick: false, // 是否开启鼠标移动拾取功能,开启后当覆盖物较多的情况下,帧率会下降
  enableMouseOver: false, //是否开启鼠标移入事件,需要开启鼠标移动拾取功能
}
```
### properties
- `{Element} container`:场景容器 **_`readonly`_**
- `{Element} widgetContainer`:场景组件容器 **_`readonly`_**
- `{Element} layerContainer`:场景图层容器 **_`readonly`_**
- `{Object} scene`:场景 **_`readonly`_**,[详细使用说明](http://resource.dvgis.cn/cesium-docs/Scene.html)
- `{Object} camera`:相机 **_`readonly`_**,[详细使用说明](http://resource.dvgis.cn/cesium-docs/Scene.html)
- `{Element} canvas`:canvas 节点 **_`readonly`_**
- `{Object} clock`:时钟,[详细使用说明](http://resource.dvgis.cn/cesium-docs/Clock.html)
- `{Object} dataSources` :数据资源集合,[详细使用说明](http://resource.dvgis.cn/cesium-docs/DataSourceCollection.html)
- `{Object} imageryLayers`:瓦片集合,[详细使用说明](http://resource.dvgis.cn/cesium-docs/ImageryLayerCollection.html)
- `{Object} entities`:实体集合,[详细使用说明](http://resource.dvgis.cn/cesium-docs/EntityCollection.html)
- [`{Popup} popup`](#popup):气泡窗口 **_`readonly`_**
- [`{ContextMenu} contextMenu`](#contextmenu):右击弹框 **_`readonly`_**
- [`{Tooltip} tooltip`](#tooltip):提示框 **_`readonly`_**
- [`{MapSplit} mapSplit`](#mapsplit):地图分割 **_`readonly`_**
- [`{TilesetSplit} tilesetSplit`](#tilesetsplit):模型分割 **_`readonly`_**
- [`{SceneSplit} sceneSplit`](#scenesplit):场景分割 **_`readonly`_**
- [`{Compass} compass`](#compass):罗盘 **_`readonly`_**
- [`{ZoomController} zoomController`](#zoomcontroller):罗盘 **_`readonly`_**
- [`{LocationBar} locationBar`](#locationbar):坐标信息 **_`readonly`_**
- [`{DistanceLegend} distanceLegend`](#distancelegend):比例尺 **_`readonly`_**
- [`{LoadingMask} loadingMask`](#loadingmask):加载蒙层 **_`readonly`_**
- `{Position} cameraPosition`:相机位置 **_`readonly`_**
- `{Number} resolution`:分辨率 **_`readonly`_**
- `{Number} zoom`: 当前层级 **_`readonly`_**
- `{Rect} viewBounds`:视野范围 **_`readonly`_**
- `{Boolean} enableEventPropagation`: 是否开启鼠标事件冒泡
- `{Boolean} enableMouseMovePick`: 是否开启鼠标移动拾取功能,开启后当覆盖物较多的情况下,帧率会下降
- `{Boolean} enableMouseOver`: 是否开启鼠标移入事件,需要开启鼠标移动拾取功能
### methods
- **_setOptions(options)_**
  设置属性
  - 参数
    - `{Object} options`:属性对象
      - 返回值 `this`
```js
// 属性参数(属性可选)
const config = {
  shadows: false, // 是否开启阴影
  resolutionScale: 1, // 设置渲染分辨率的缩放比例
  showAtmosphere: true, //是否显示大气层
  showSun: true, //是否显示太阳
  showMoon: true, //是否显示月亮
  enableFxaa: true, //是否开启抗锯齿
  msaaSamples: 1, //msaa抗拒出取样度
  cameraController: {
    // 相机控制
    enableRotate: true, // 是否可以旋转
    enableTilt: true, // 是否可以翻转
    enableTranslate: true, // 是否可以平移
    enableZoom: true, // 是否可以缩放
    enableCollisionDetection: true, // 是否支持碰撞检测
    minimumZoomDistance: 1.0, // 最小缩放距离
    maximumZoomDistance: 40489014.0, // 最大缩放距离
  },
  globe: {
    show: true, // 是否显示地球
    showGroundAtmosphere: true, // 显示地面大气
    enableLighting: false, //是否开启灯光,开启后地球会根据当前时间启用灯光
    depthTestAgainstTerrain: false, //是否开启深度测试
    tileCacheSize: 100, // 默认瓦片缓存大小
    preloadSiblings: false, //是否应预加载渲染同级图块
    terrainExaggeration: 1, //地形夸张系数
    terrainExaggerationRelativeHeight: 1, //地形相对高度夸张系数
    baseColor: new DC.Color(0, 0, 0.5, 1), //地球默认底色
    filterColor: newDC.Color(0, 0, 0, 0), //瓦片过滤色,设置后不可逆
    translucency: {
      //地表透明
      enabled: false, // 是否开启地表透明
      backFaceAlpha: 1, // 地球背面透明度
      backFaceAlphaByDistance: null, //根据距离设置地球背面透明度: {near:400,nearValue:0.2,far:800,farValue:1}
      frontFaceAlpha: 1, // 地球正面透明度
      frontFaceAlphaByDistance: null, //根据距离设置地球正面透明度: {near:400,nearValue:0.2,far:800,farValue:1}
    },
  },
  skyBox: {
    sources: {}, // 六个面的贴图
    show: true, //是否显示
    offsetAngle: 0, //旋转角度
  },
}
```
- **_setPitchRange(min,max)_**
  设置翻转角度
  - 参数
    - `{Number} min`:最小角度
    - `{Number} max`:最大角度
  - 返回值 `this`
- **_changeSceneMode(sceneMode, duration)_**
  改变场景模式
  - 参数
    - `{Number} sceneMode`:场景模式 ,2:2D,3:3D,2.5:2.5D
    - `{Number} duration`:间隔时间
  - 返回值 `this`
- **_changeMouseMode(mouseMode)_**
  改变鼠标使用模式
  - 参数
    - `{Number} mouseMode`:鼠标模式,详情参考:`DC.MouseMode`
  - 返回值 `this`
- **_addBaseLayer(baseLayers,options)_**
  添加地图
  - 参数
    - `{baseLayer|Array<baseLayer>} baseLayers`:地图
    - `{Object} options`:属性
  - 返回值 `this`
```js
//属性参数 (属性可选)
const options = {
  name: '电子地图', //名称
  iconUrl: '../preview.png', //缩略图
  alpha: 1.0,
  nightAlpha: 1.0,
  dayAlpha: 1.0,
  brightness: 1.0,
  contrast: 1.0,
  hue: 1.0,
  saturation: 1.0,
  gamma: 1.0,
}
```
- **_changeBaseLayer(index)_**
  更改地图
  - 参数
    - `{Number} index`:地图索引
  - 返回值 `this`
- **_getImageryLayerInfo(windowPosition)_**
  获取瓦片信息
  - 参数
    - `{Object} windowPosition`:窗口坐标
  - 返回值 `promise`
- **_setTerrain(terrain)_**
  设置地形
  - 参数
    - `{Terrain} terrain`:地形
  - 返回值 `this`
- **_addLayerGroup(layerGroup)_**
  添加图层组
  - 参数
    - `{LayerGroup} layerGroup`:图层组
  - 返回值 `this`
- **_removeLayerGroup(layerGroup)_**
  移除图层组
  - 参数
    - `{LayerGroup} layerGroup`:图层组
  - 返回值 `this`
- **_getLayerGroup(id)_**
  获取图层组
  - 参数
    - `{String} id`:图层组 ID
  - 返回值 `layerGroup`
- **_addLayer(layer)_**
  添加图层
  - 参数
    - `{Layer} layer`:图层
  - 返回值 `this`
- **_removeLayer(layer)_**
  删除图层
  - 参数
    - `{Layer} layer`:图层
  - 返回值 `this`
- **_getLayer(id)_**
  获取图层
  - 参数
    - `{String} id`:图层 ID
  - 返回值 `layer`
- **_getLayers()_**
  获取所有图层,不包括地图
  - 返回值 `layer`
- **_eachLayer(method, context)_**
  遍历所有图层
  - 参数
    - `{Function} method`:回调函数
    - `{Object} context`:上下文,默认为 this
  - 返回值 `this`
  ```js
  viewer.eachLayer((layer) => {})
  ```
- **_flyTo(target,duration)_**
  飞向目标
  - 参数
    - `{VectorLayer|Overlay} target` :目标
    - `{Number} duration`:飞到位置时间,单位:秒
  - 返回值 `this`
- **_zoomTo(target)_**
  缩放到目标
  - 参数
    - `{VectorLayer|Overlay} target` :目标
  - 返回值 `this`
- **_flyToPosition(position, completeCallback, duration)_**
  飞到具体位置
  - 参数
    - `{Position} position`:位置
    - `{Function} completeCallback`:飞完之后触发的回调
    - `{Number} duration`:飞到位置时间,单位:秒
  - 返回值 `this`
- **_zoomToPosition(position, completeCallback)_**
  缩放到具体位置
  - 参数
    - `{DC.Position} position`:位置
    - `{Function} completeCallback`:缩放完成后触发的回调
  - 返回值 `this`
- **_flyToBounds(bounds,{heading,pitch,roll}, completeCallback, duration)_**
  飞到指定的范围
  - 参数
    - `{String|Array} bounds`:范围,格式:[minX,minY,maxX,maxY]
    - `{Object} hpr`:方位角
    - `{Function} completeCallback`:飞完之后触发的回调
    - `{Number} duration`:飞到位置时间,单位:秒
  - 返回值 `this`
- **_zoomToBounds(bounds,{heading,pitch,roll}, completeCallback)_**
  缩放到指定的范围
  - 参数
    - `{String|Array} bounds`:范围,格式:[minX,minY,maxX,maxY]
    - `{Object} hpr`:方位角
    - `{Function} completeCallback`:缩放完之后触发的回调
  - 返回值 `this`
- **_on(type, callback, context)_**
  事件订阅
  - 参数
    - `{Object} type` :订阅类型
    - `{Function} callback` :订阅回调
    - `{Object} context` :上下文
  - 返回值 `this`
- **_once(type, callback, context)_**
  事件订阅(一次)
  - 参数
    - `{Object} type` :订阅类型
    - `{Function} callback` :订阅回调
    - `{Object} context` :上下文
  - 返回值 `this`
- **_off(type, callback, context)_**
  取消事件订阅
  - 参数
    - `{Object} type` :订阅类型
    - `{Function} callback` :订阅回调
    - `{Object} context` :上下文
  - 返回值 `this`
- **_destroy()_**
  销毁三维场景
  - 返回值 `this`
- **_exportScene(name)_**
  导出场景
  - 参数
    - `{String} name` :名称,默认为 scene
  - 返回值 `this`
## Popup
> 气泡窗口
### example
```js
let popup = viewer.popup
popup.setContent('<div></div>')
```
### properties
- `{String} state`:状态 **_`readonly`_**
- `{Object} config`:配置 **_`writeOnly`_**
```js
// 配置(属性可选),配置后会影响全局的popup的显示样式,请慎重。
const config = {
  position: 'center', // popup的位于鼠标的点击位置的方向,有:center,left ,right
  customClass: 'custom', // 添加自定义的Css 类名到popup中,多个用空格隔开
}
```
### methods
- **_setPosition(position)_**
  设置位置
  - 参数
    - `{Cartesian3} position`:世界坐标
  - 返回值 `this`
- **_setContent(content)_**
  设置内容
  - 参数
    - `{String|Element} content`:内容
  - 返回值 `this`
- **_setWrapper(wrapper)_**
  设置容器
  - 参数
    - `{Element} wrapper`:容器 **_`(一般用于 MVVM 框架的模板)`_**
  - 返回值 `this`
- **_showAt(position, content)_**
  设置内容
  - 参数
    - `{Cartesian3} position`:世界坐标
    - `{String|Element} content`:内容
  - 返回值 `this`
- **_hide()_**
  隐藏气泡窗口
  - 返回值 `this`
## ContextMenu
> 右击菜单
### example
```js
let contextMenu = viewer.contextMenu
contextMenu.enable = true
contextMenu.DEFAULT_MENU = [
  {
    label: '测试',
    callback: (e) => {
    }, // e是一个对象主要包括 windowPosition,position,surfacePosition,overlay
    context: this,
  },
] // 设置默认的右击菜单,会影响全局右击菜单(慎用)。
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
- `{Array} DEFAULT_MENU`:默认菜单,菜单的回调函数参数为一个对象 **_`writeOnly`_**
## Tooltip
> 提示框
### example
```js
let tooltip = viewer.tooltip
tooltip.enable = true
tooltip.showAt({ x: 100, y: 100 }, '测试')
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
### methods
- **_showAt(position,content)_**
  设置位置
  - 参数
    - `{Cartesian2} position`:屏幕坐标
    - `{String|Element} content`:内容
  - 返回值 `this`
## MapSplit
> 地图分割
### examples
```js
let baseLayer_elc = DC.ImageryLayerFactory.createGoogleImageryLayer()
viewer.mapSplit.enable = true
viewer.mapSplit.addBaseLayer(baseLayer_elc, -1)
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
### methods
- **_addBaseLayer(baseLayer,[splitDirection])_**
  添加地图
  - 参数
    - `{BaseLayer} baseLayer`:地图
    - `{Number} splitDirection`:分割方向,-1:左,0:无,1:右
  - 返回值 `this`
## TilesetSplit
> 模型分割
### examples
```js
let tileset = new DC.Tileset('**/tileset.json')
tileset.setSplitDirection(1)
viewer.tilesetSplit.enable = true
viewer.tilesetSplit.addTileset(tileset)
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
### methods
- **_addTileset(tileset)_**
  添加地图
  - 参数
    - `{Tileset} tileset`:模型
  - 返回值 `this`
## SceneSplit
> 场景分割
### examples
```js
let tileset = new DC.Tileset('**/tileset.json')
tileset.setSplitDirection(1)
viewer.sceneSplit.enable = true
viewer.sceneSplit.addTileset(tileset)
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
### methods
- **_addBaseLayer(baseLayer)_**
  添加地图
  - 参数
    - `{BaseLayer} baseLayer`:地图
  - 返回值 `this`
- **_addTileset(tileset)_**
  添加地图
  - 参数
    - `{Tileset} tileset`:模型
  - 返回值 `this`
## Compass
> 罗盘
### examples
```js
viewer.compass.enable = true
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
## ZoomController
> 缩放控制
### examples
```js
viewer.zoomController.enable = true
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
## LocationBar
> 坐标信息
### examples
```js
viewer.locationBar.enable = true
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
## DistanceLegend
> 比例尺
### examples
```js
viewer.distanceLegend.enable = true
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
## LoadingMask
> 加载蒙层
### examples
```js
viewer.loadingMask.enable = true
```
### properties
- `{Boolean} enable`:是否启用
- `{String} state`:状态 **_`readonly`_**
## DC.GroundSkyBox
> 近地天空盒,[详情参考](http://resource.dvgis.cn/cesium-docs/SkyBox.html)
### example
```js
scene.skyBox = new DC.GroundSkyBox({
  sources: {
    positiveX: 'skybox_px.png',
    negativeX: 'skybox_nx.png',
    positiveY: 'skybox_py.png',
    negativeY: 'skybox_ny.png',
    positiveZ: 'skybox_pz.png',
    negativeZ: 'skybox_nz.png',
  },
})
```
### creation
- **_constructor(id)_**
  构造函数
  - 参数
    - `{Object} options`:配置
  - 返回值 `skyBox`
```js
//options(属性可选)
const options = {
  sources: {}, // 六个面的贴图
  show: true, //显示
  offsetAngle: 0, //旋转角度
}
```
### properties
- `{Object} sources`:六个面的贴图
- `{Boolean} show`:显示
- `{Number} offsetAngle`:旋转角度
## DC.Position
> 坐标类,用于描述物体在场景中的具体位置,采用右手标准
### example
```js
let position = new DC.Position(120, 22, 102)
let position1 = DC.Position.fromString('120,22,102')
let position2 = DC.Position.fromArray([120, 22, 102])
let position3 = DC.Position.fromObject({ lng: 120, lat: 22, alt: 102 })
```
### creation
- **_constructor(lng,lat,alt,heading,pitch,roll)_**
  构造函数
  - 参数
    - `{Number} lng`:经度
    - `{Number} lat`:纬度
    - `{Number} alt`:高度,单位:米,默认:0
    - `{Number} heading`:偏航角度,可能其他框架作 yaw,表示绕 Z 轴旋转。默认:0
    - `{Number} pitch`:俯仰角度,表示绕 Y 轴旋转。默认:0
    - `{Number} roll`:翻转角度,表示绕 X 轴旋转。默认:0
  - 返回值 `position`
### properties
- `{Number} lng`:经度
- `{Number} lat`:纬度
- `{Number} alt`:高度,单位:米,默认:0
- `{Number} heading`:偏航角度,可能其他框架作 yaw,表示绕 Z 轴旋转。默认:0
- `{Number} pitch`:俯仰角度,表示绕 Y 轴旋转。默认:0
- `{Number} roll`:翻转角度,表示绕 X 轴旋转。默认:0
### methods
- **_serialize()_**
  序列化
  - 返回值 `string`
- **_copy()_**
  复制一个新的位置
  - 返回值 `position`
- **_toString()_**
  将坐标字符化
  - 返回值 `string`
- **_toArray()_**
  将坐标数组化
  - 返回值 `array`
- **_toObject()_**
  将坐标对象化
  - 返回值 `Object`
### static methods
- **_fromString(str)_**
  将字符化坐标转换为坐标对象
  - 参数
    - `{String} str`:字符化坐标
  - 返回值 `position`
- **_fromArray(array)_**
  将数组化坐标转换为坐标对象
  - 参数
    - `{Array} array`:数组化坐标
  - 返回值 `position`
- **_fromObject(obj)_**
  将 Json 对象坐标转换为坐标对象
  - 参数
    - `{Object} obj`:Json 对象坐标
  - 返回值 `position`
- **_fromCoordString(str)_** `deprecated`
  字符坐标串转换为坐标对象
  - 参数
    - `{String} str`:字符坐标串
  - 返回值 `position`
- **_fromCoordArray(array)_** `deprecated`
  坐标数组转换为坐标对象
  - 参数
    - `{Array<String|Number>} array`:坐标数组
  - 返回值 `position`
- **_deserialize(valStr)_**
  反序列化
  - 参数
    - `{String} valStr`:序列化的对象
  - 返回值 `position`
## DC.Parse
> 坐标解析工具类,可简写为 DC.P
```js
let position = DC.P.parsePosition('123,32,0')
```
### static methods
- **_parsePosition(position)_**
  解析坐标为 DC.Position
  - 参数
    - `{String|Array|Position} position`:坐标
  - 返回值 `position`
- **_parsePositions(positions)_**
  解析坐标为 Array<DC.Position>
  - 参数
    - `{String|Array} positions`: 坐标
  - 返回值 `array`
- **_parsePointCoordToArray(position)_**
  解析点位坐标为数组
  - 参数
    - `{String|Position} position`:点位坐标
  - 返回值 `array`
- **_parsePolylineCoordToArray(positions)_**
  解析线坐标为二维数组
  - 参数
    - `{String|Array} positions`:线坐标
  - 返回值 `array`
- **_parsePolygonCoordToArray(positions,loop)_**
  解析面坐标为三维数组
  - 参数
    - `{String|Array} positions`:面坐标
    - `{Boolean} loop`:闭合
  - 返回值 `array`
## DC.Transform
> 坐标转换工具类 ,可简写为 DC.T
```js
let cartesian3 = DC.T.transformWGS84ToCartesian(new DC.Position(120, 20))
```
### static methods
- **_transformCartesianToWGS84(cartesian)_**
  世界坐标转换为 84 坐标
  - 参数
    - `{Cartesian3} cartesian`:世界坐标
  - 返回值 `position`
- **_transformWGS84ToCartesian(position)_**
  84 坐标转换为世界坐标
  - 参数
    - `{Position} position`:84 坐标
  - 返回值 `cartesian`
- **_transformWGS84ToCartographic(position)_**
  84 坐标转换为制图坐标
  - 参数
    - `{Position} position`:84 坐标
  - 返回值 `cartographic`
- **_transformCartesianArrayToWGS84Array(cartesianArr)_**
  世界坐标数组转 84 坐标数组
  - 参数
    - `{Array<cartesian3>} cartesianArr`:世界坐标数组
  - 返回值 `array`
- **_transformWGS84ArrayToCartesianArray(WGS84Arr)_**
  84 坐标数组转世界坐标数组
  - 参数
    - `{Array<cartesian3>} WGS84Arr`:84 坐标数组
  - 返回值 `array`
- **_transformWGS84ToMercator(position)_**
  84 坐标转 Mercator
  - 参数
    - `{Position} position`:84 坐标
  - 返回值 `position`
- **_transformMercatorToWGS84(position)_**
  Mercator 坐标转 84
  - 参数
    - `{Position} position`:Mercator 坐标
  - 返回值 `position`
- **_transformWindowToWGS84(position,viewer)_**
  屏幕坐标转 84
  - 参数
    - `{Object} position`: 屏幕坐标,格式`{x:1,y:1}`
    - `{Viewer} viewer`:3D 场景
  - 返回值 `position`
- **_transformWGS84ToWindow(position,viewer)_**
  84 转屏幕坐标
  - 参数
    - `{Position} position`: 84 坐标
    - `{Viewer} viewer`:3D 场景
  - 返回值 `Object`
## DC.CoordTransform
> 国内坐标转换工具
```js
let point = DC.CoordTransform.BD09ToGCJ02(120, 20)
```
### static methods
- **_BD09ToGCJ02(lng, lat)_**
  百度坐标系 (BD-09) 的转换 火星坐标系 (GCJ-02)
  - 参数
    - `{Number} lng`:经度
    - `{Number} lat`:纬度
  - 返回值 `[]`
- **_GCJ02ToBD09(lng, lat)_**
  火星坐标系 (GCJ-02) 转换为 百度坐标系 (BD-09)
  - 参数
    - `{Number} lng`:经度
    - `{Number} lat`:纬度
  - 返回值 `[]`
- **_WGS84ToGCJ02(lng, lat)_**
  WGS-84 转换为 火星坐标系 (GCJ-02)
  - 参数
    - `{Number} lng`:经度
    - `{Number} lat`:纬度
  - 返回值 `[]`
- **_GCJ02ToWGS84(lng, lat)_**
  火星坐标系 (GCJ-02) 转换为 WGS-84
  - 参数
    - `{Number} lng`:经度
    - `{Number} lat`:纬度
  - 返回值 `[]`
## DC.Math
> 基本函数类
### static methods
- **_area(positions)_**
  面积,单位:平方米
  - 参数
    - `{Array<Position>} positions`: 点位数据
  - 返回值 `number`
- **_bounds(positions , expand)_**
  边界
  - 参数
    - `{Array<Position>} positions`: 点位数据
    - `{Number}} expand`: 扩展比例:0~1
  - 返回值 `object`
- **_mid(start , end)_**
  两点之间的中心点
  - 参数
    - `start`: 开始位置
    - `end`: 结束位置
  - 返回值 `position`
- **_center(positions)_**
  中心点
  - 参数
    - `{Array<Position>} positions`: 点位数据
  - 返回值 `position`
- **_distance(positions)_**
  距离,单位:米
  - 参数
    - `{Array<Position>} positions`: 点位数据
  - 返回值 `number`
- **_heading(start,end)_**
  偏转角度,单位:度
  - 参数
    - `start`: 开始位置
    - `end`: 结束位置
  - 返回值 `number`
- **_parabola(start, end,height,count)_**
  抛物线
  - 参数
    - `start`: 开始位置
    - `end`: 结束位置
    - `{Number} height`: 最高点高度
    - `{Number} count`: 点位数量
  - 返回值 `Array`
> [more](http://resource.dvgis.cn/cesium-docs/Math.html)
## DC.Util
> 工具类
### static methods
- **_uuid(prefix)_**
  生成 uuid
  - 参数
    - `{String} prefix`:前缀,默认为 D
  - 返回值 `string`
- **_merge(dest, ...sources)_**
  属性合并
  - 参数
    - `{Object} dest`:目标对象
    - `{Object|Array} sources`:需要合并的属性
  - 返回值 `object`
- **_emptyImageUrl()_**
  空图片
- **_debounce(fn,delay)_**
  防抖
- **_throttle(fn,delay)_**
  节流
## DC.DomUtil
> Dom 工具类
### static methods
- **_get(id)_**
  创建 dom
  - 参数
    - `{String} id`: 要素 ID
  - 返回值 `Element`
- **_create(tagName, className, [container])_**
  创建 dom
  - 参数
    - `{String} tagName`: 标签名
    - `{String} className`: 样式名,多个用空格隔开
    - `{Element} [container]`: 父容器
  - 返回值 `Element`
- **_addClass(el, name)_**
  添加类名
  - 参数
    - `{Element} el`: 要素
    - `{String} className`: 样式名,多个用空格隔开
- **_removeClass(el, name)_**
  删除类名
  - 参数
    - `{Element} el`: 要素
    - `{String} className`: 样式名,多个用空格隔开
- **_addClass(el, name)_**
  添加类名
  - 参数
    - `{Element} el`: 要素
    - `{String} className`: 样式名,多个用空格隔开
- **_createSvg(width, height, path, [container])_**
  添加类名
  - 参数
    - `{Number} width`: 宽度
    - `{Number} height`: 高度
    - `{String} path`: 路径
    - `{Element} [container]`: 父容器
  - 返回值 `svg`
- **_parseDom(domStr, [withWrapper], [className])_**
  字符串转 Dom
  - 参数
    - `{String} domStr`: dom 字符串
    - `{Boolean} withWrapper`:返回是否含有父容器
    - `{String} className`: 类样式名称
  - 返回值 `Element | Nodes`
- **_enterFullscreen(el)_**
  进入全屏
  - 参数
    - `{Element} el`: 要素
- **_exitFullscreen()_**
  退出全屏
- **_createVideo(url, className, [container])_**
  创建视频节点
  - 参数
    - `{String} url`: 视频地址
    - `{String} className`: 样式名,多个用空格隔开
    - `{Element} [container]`: 父容器
  - 返回值 `Element | Nodes`
 |