You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

layer.md 14KB

2 years ago
1 month ago
1 month ago
2 years ago
1 month ago
1 month ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
2 years ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
2 years ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
2 years ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
1 month ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775
  1. # 图层 API 🌎
  2. 将具有相同业务逻辑或属性的覆盖元素进行分类,以便于同一管理
  3. ## DC.Layer
  4. > 图层的基类,其子类是实例化后需添加到三维场景中方可展示各类三维数据
  5. :::warning
  6. 该基本类无法实例化,既视实例化后也无法使用
  7. :::
  8. ### properties
  9. - `{String} id`:唯一标识 **_`readonly`_**
  10. - `{Boolean} show`:是否显示
  11. - `{Object} attr`:业务属性
  12. - `{String} state`:图层状态 **_`readonly`_**
  13. - `{String} type`:图层类型 **_`readonly`_**
  14. ### methods
  15. - **_addOverlay(overlay)_**
  16. 添加覆盖物
  17. - 参数
  18. - `{Overlay} overlay`:覆盖物
  19. - 返回值 `this`
  20. - **_addOverlays(overlays)_**
  21. 添加覆盖物数组
  22. - 参数
  23. - `{Array<Overlay>} overlays`:覆盖物数组
  24. - 返回值 `this`
  25. - **_removeOverlay(overlay)_**
  26. 删除覆盖物
  27. - 参数
  28. - `{Overlay} overlay`:覆盖物
  29. - 返回值 `this`
  30. - **_getOverlay(overlayId)_**
  31. 根据 Id 获取覆盖物`(不推荐用)`
  32. - 参数
  33. - `{String} overlayId`:覆盖物唯一标识(默认产生)
  34. - 返回值 `overlay`
  35. - **_getOverlayById(Id)_**
  36. 根据业务 Id 获取覆盖物`(推荐用)`
  37. - 参数
  38. - `{String} Id`:覆盖物业务唯一标识
  39. - 返回值 `overlay`
  40. - **_getOverlaysByAttr(attrName, attrVal)_**
  41. 根据覆盖物属性获取覆盖物
  42. - 参数
  43. - `{String} attrName`:属性名称
  44. - `{Object} attrVal`:属性值
  45. - 返回值 `array`
  46. ```js
  47. overlay.attr.name = 'test' //设置覆盖物的属性
  48. let arr = layer.getOverlaysByAttr('name', 'test') //根据属性获取覆盖物
  49. ```
  50. - **_getOverlays()_**
  51. 获取所有覆盖物
  52. - 返回值 `array`
  53. - **_eachOverlay(method, context)_**
  54. 遍历覆盖物
  55. - 参数
  56. - `{Function} method`:回调函数,参数为每一个覆盖物
  57. - `{Object} context`:上下文
  58. - 返回值 `this`
  59. ```js
  60. layer.eachOverlay((item) => {})
  61. ```
  62. - **_clear()_**
  63. 清空图层
  64. - 返回值 `this`
  65. - **_remove()_**
  66. 删除图层
  67. - 返回值 `this`
  68. - **_addTo(viewer)_**
  69. 添加图层到场景
  70. - 参数
  71. - `{Viewer|World} viewer`:场景
  72. - 返回值 `this`
  73. - **_on(type, callback, context)_**
  74. 事件订阅
  75. - 参数
  76. - `{Object} type` :订阅类型
  77. - `{Function} callback` :订阅回调
  78. - `{Object} context` :上下文
  79. - 返回值 `this`
  80. - **_off(type, callback, context)_**
  81. 取消事件订阅
  82. - 参数
  83. - `{Object} type` :订阅类型
  84. - `{Function} callback` :订阅回调
  85. - `{Object} context` :上下文
  86. - 返回值 `this`
  87. - **_fire(type,params)_**
  88. 触发事件
  89. - 参数
  90. - `{Object} type` :订阅类型
  91. - `{Object} params` :参数
  92. - 返回值 `this`
  93. ### static methods
  94. - **_registerType(type)_**
  95. 注册图层类型
  96. - 参数
  97. - `{String} type`:图层类型
  98. - **_getLayerType()_**
  99. 获取图层类型
  100. - 返回值 `string`
  101. ## DC.LayerGroup
  102. > 图层组,将图层按一定的逻辑分组,方便统一管理
  103. ### example
  104. ```js
  105. let layerGroup = new DC.LayerGroup('id')
  106. viewer.addLayerGroup(layerGroup)
  107. let layer = new DC.VectorLayer('layer')
  108. layerGroup.addLayer(layer)
  109. ```
  110. ### creation
  111. - **_constructor(id)_**
  112. 构造函数
  113. - 参数
  114. - `{String} id`:图层组唯一标识
  115. - 返回值 `layerGroup`
  116. ### properties
  117. - `{String} id`:唯一标识 **_`readonly`_**
  118. - `{Boolean} show`:是否显示
  119. - `{String} type`:图层类型 **_`readonly`_**
  120. ### methods
  121. - **_addLayer(layer)_**
  122. 添加图层
  123. - 参数
  124. - `{Layer} layer`:图层
  125. - 返回值 `this`
  126. - **_removeLayer(layer)_**
  127. 删除图层
  128. - 参数
  129. - `{Layer} layer`:图层
  130. - 返回值 `this`
  131. - **_getLayer(id)_**
  132. 获取图层
  133. - 参数
  134. - `{String} id`:图层 ID
  135. - 返回值 `layer`
  136. - **_getLayers()_**
  137. 获取所有图层,不包括地图
  138. - 返回值 `layer`
  139. - **_remove()_**
  140. 删除图层组
  141. - 返回值 `this`
  142. - **_addTo(viewer)_**
  143. 添加图层到场景
  144. - 参数
  145. - `{Viewer|World} viewer`:场景
  146. - 返回值 `this`
  147. ## DC.VectorLayer
  148. > 矢量图层,用于添加各类矢量数据(点、线、面等),将矢量数据按一定的逻辑分组,方便统一管理,继承于[Layer](#dc-layer)
  149. ### example
  150. ```js
  151. let layer = new DC.VectorLayer('id')
  152. viewer.addLayer(layer)
  153. ```
  154. ### creation
  155. - **_constructor(id)_**
  156. 构造函数
  157. - 参数
  158. - `{String} id`:图层唯一标识
  159. - 返回值 `vectorLayer`
  160. ## DC.DynamicLayer
  161. > 动态图层,用于添加各类动态矢量数据(图标、模型等),将矢量数据按一定的逻辑分组,方便统一管理,继承于[Layer](#dc-layer)
  162. ### example
  163. ```js
  164. let layer = new DC.DynamicLayer('id')
  165. viewer.addLayer(layer)
  166. ```
  167. ### creation
  168. - **_constructor(id)_**
  169. 构造函数
  170. - 参数
  171. - `{String} id`:图层唯一标识
  172. - 返回值 `dynamicLayer`
  173. ## DC.PrimitiveLayer
  174. > 图元图层,用于添加各类图元数据,将图元数据按一定的逻辑分组,方便统一管理,继承于[Layer](#dc-layer)
  175. ### example
  176. ```js
  177. let layer = new DC.PrimitiveLayer('id')
  178. viewer.addLayer(layer)
  179. ```
  180. ### creation
  181. - **_constructor(id)_**
  182. 构造函数
  183. - 参数
  184. - `{String} id`:图层唯一标识
  185. - 返回值 `primitiveLayer`
  186. ## DC.GroundPrimitiveLayer
  187. > 贴地图元图层,用于添加各类贴地图元数据,将贴地图元数据按一定的逻辑分组,方便统一管理,继承于[Layer](#dc-layer)
  188. ### example
  189. ```js
  190. let layer = new DC.GroundPrimitiveLayer('id')
  191. viewer.addLayer(layer)
  192. ```
  193. ### creation
  194. - **_constructor(id)_**
  195. 构造函数
  196. - 参数
  197. - `{String} id`:图层唯一标识
  198. - 返回值 `groundPrimitiveLayer`
  199. ## DC.TilesetLayer
  200. > 3dTiles 图层,用于添加 3dTiles 模型数据, 继承于[Layer](#dc-layer)
  201. ### example
  202. ```js
  203. let layer = new DC.TilesetLayer('id')
  204. viewer.addLayer(layer)
  205. ```
  206. ### creation
  207. - **_constructor(id)_**
  208. 构造函数
  209. - 参数
  210. - `{String} id`:图层唯一标识
  211. - 返回值 `tilesetLayer`
  212. ## DC.GeoJsonLayer
  213. > GeoJson 图层,用于加载 GeoJson 格式数据,继承于[Layer](#dc-layer),
  214. ### example
  215. ```js
  216. let layer = new DC.GeoJsonLayer('id', '**/**.geojson')
  217. layer.eachOverlay((item) => {
  218. // item 为一个entity,
  219. if (item.polyline) {
  220. //todo
  221. let polyline = DC.Polyline.fromEntity(item)
  222. }
  223. if (item.polygon) {
  224. //todo
  225. let polygon = DC.Polygon.fromEntity(item)
  226. }
  227. if (item.billboard) {
  228. //todo
  229. let point = DC.Point.fromEntity(item)
  230. let divIcon = DC.DivIcon.fromEntity(item)
  231. let billboard = DC.Billboard.fromEntity(item)
  232. }
  233. })
  234. ```
  235. ### creation
  236. - **_constructor(id,url,[options])_**
  237. 构造函数
  238. - 参数
  239. - `{String} id`:图层唯一标识
  240. - `{String} url`:数据地址
  241. - `{Object} options`
  242. :属性配置,[详细使用说明](http://resource.dvgis.cn/cesium-docs/GeoJsonDataSource.html)
  243. - 返回值 `geoJsonLayer`
  244. ### methods
  245. - **_toVectorLayer()_**
  246. 转换为矢量图层
  247. - 返回值 `vectorLayer`
  248. - **_toModelLayer(modelUrl)_**
  249. 转换为模型图层
  250. - 参数
  251. - `{String} modelUrl`:模型地址
  252. - 返回值 `vectorLayer`
  253. ## DC.TopoJsonLayer
  254. > TopoJson 图层,用于加载 TopoJson 格式数据,继承于[Layer](#dc-layer),
  255. ### example
  256. ```js
  257. let layer = new DC.GeoJsonLayer('id', '**/**.geojson')
  258. layer.eachOverlay((item) => {
  259. // item 为一个entity,
  260. if (item.polyline) {
  261. //todo
  262. let polyline = DC.Polyline.fromEntity(item)
  263. }
  264. if (item.polygon) {
  265. //todo
  266. let polygon = DC.Polygon.fromEntity(item)
  267. }
  268. if (item.billboard) {
  269. //todo
  270. let point = DC.Point.fromEntity(item)
  271. let divIcon = DC.DivIcon.fromEntity(item)
  272. let billboard = DC.Billboard.fromEntity(item)
  273. }
  274. })
  275. ```
  276. ### creation
  277. - **_constructor(id,url,[options])_**
  278. 构造函数
  279. - 参数
  280. - `{String} id`:图层唯一标识
  281. - `{String} url`:数据地址
  282. - `{Object} options`
  283. :属性配置,[详细使用说明](http://resource.dvgis.cn/cesium-docs/GeoJsonDataSource.html)
  284. - 返回值 `topoJsonLayer`
  285. ### methods
  286. - **_toVectorLayer()_**
  287. 转换为矢量图层
  288. - 返回值 `vectorLayer`
  289. - **_toModelLayer(modelUrl)_**
  290. 转换为模型图层
  291. - 参数
  292. - `{String} modelUrl`:模型地址
  293. - 返回值 `vectorLayer`
  294. ## DC.HtmlLayer
  295. > Html 图层,用于加载 DivIcon 节点,继承于[Layer](#dc-layer),
  296. ### example
  297. ```js
  298. let layer = new DC.HtmlLayer('dom')
  299. viewer.addLayer(layer)
  300. ```
  301. ### creation
  302. - **_constructor(id)_**
  303. 构造函数
  304. - 参数
  305. - `{String} id`:图层唯一标识
  306. - 返回值 `htmlLayer`
  307. ## DC.CzmlLayer
  308. > Czml 图层,用于加载 Czml 数据,继承于[Layer](#dc-layer)
  309. ### example
  310. ```js
  311. let layer = new DC.CzmlLayer('id', '**/**.czml')
  312. layer.eachOverlay((item) => {
  313. if (item.polyline) {
  314. //todo
  315. }
  316. if (item.polygon) {
  317. //todo
  318. }
  319. if (item.billboard) {
  320. //todo
  321. }
  322. })
  323. ```
  324. ### creation
  325. - **_constructor(id,url,[options])_**
  326. 构造函数
  327. - 参数
  328. - `{String} id`:图层唯一标识
  329. - `{String} url`:数据地址
  330. - `{Object} options`:属性配置 [详细使用说明](http://resource.dvgis.cn/cesium-docs/CzmlDataSource.html)
  331. - 返回值 `czmlLayer`
  332. ## DC.KmlLayer
  333. > Kml 图层,用于加载 Kml 数据,继承于[Layer](#dc-layer)
  334. ### example
  335. ```js
  336. let layer = new DC.KmlLayer('id', '**/**.kml')
  337. layer.eachOverlay((item) => {
  338. if (item.polyline) {
  339. //todo
  340. }
  341. if (item.polygon) {
  342. //todo
  343. }
  344. if (item.billboard) {
  345. //todo
  346. }
  347. })
  348. ```
  349. ### creation
  350. - **_constructor(id,url,[options])_**
  351. 构造函数
  352. - 参数
  353. - `{String} id`:图层唯一标识
  354. - `{String} url`:数据地址
  355. - `{Object} options`:属性配置,[详细使用说明](http://resource.dvgis.cn/cesium-docs/KmlDataSource.html)
  356. - 返回值 `kmlLayer`
  357. ## DC.GpxLayer
  358. > GPX 图层,用于加载 gpx 数据,继承于[Layer](#dc-layer)
  359. ### example
  360. ```js
  361. let layer = new DC.GpxLayer('id', '**/**.gpx')
  362. ```
  363. ### creation
  364. - **_constructor(id,url,[options])_**
  365. 构造函数
  366. - 参数
  367. - `{String} id`:图层唯一标识
  368. - `{String} url`:数据地址
  369. - `{Object} options`:属性配置,[详细使用说明](http://resource.dvgis.cn/cesium-docs/GpxDataSource.html)
  370. - 返回值 `gpxLayer`
  371. ## DC.ClusterLayer
  372. > 聚合图层,继承于[Layer](#dc-layer)
  373. ### example
  374. ```js
  375. let layer = new DC.ClusterLayer('id', { image: '' })
  376. viewer.addLayer(layer)
  377. ```
  378. ### creation
  379. - **_constructor(id,[options])_**
  380. 构造函数
  381. - 参数
  382. - `{String} id`:图层唯一标识
  383. - `{Object} options`:属性配置
  384. - 返回值 `clusterLayer`
  385. ```js
  386. // options(属性可选)
  387. const options = {
  388. "radius": 40,//像素范围
  389. "maxZoom": 25,
  390. "image": "<单个点图片地址>",
  391. "style": "circle", // circle 、 clustering 、custom
  392. "gradientColors": {
  393. "0.0001": DC.Color.DEEPSKYBLUE,
  394. "0.001": DC.Color.GREEN,
  395. "0.01": DC.Color.ORANGE,
  396. "0.1": DC.Color.RED
  397. },//幅度颜色设置
  398. "gradientImages": {},//幅度图片设置,仅当style为custom有效
  399. "clusterSize": 16, //集合图标尺寸
  400. "fontSize": 12,// 字体大小
  401. "fontColor": DC.Color.BLACK, //字体颜色
  402. "getCountOffset": (count) => {
  403. return { x: 0, y: 0 }
  404. } //字体偏移函数
  405. }
  406. ```
  407. ### methods
  408. - **_setPoints(points)_**
  409. 设置点位
  410. - 参数
  411. - `{Array<Object>} points`:点位信息
  412. - 返回值 `clusterLayer`
  413. ## DC.HeatMapLayer
  414. > 热区图层,继承于[Layer](#dc-layer)
  415. ### example
  416. ```js
  417. let layer = new DC.HeatMapLayer('layer')
  418. viewer.addLayer(layer)
  419. ```
  420. ### creation
  421. - **_constructor(id,bounds,[options])_**
  422. 构造函数
  423. - 参数
  424. - `{String} id`:图层唯一标识
  425. - `{Object} options`:属性配置
  426. - 返回值 `heatMapLayer`
  427. ```js
  428. // options(属性可选)
  429. const options = {
  430. "gradient": {
  431. "0.5": "green",
  432. "0.6": "orange",
  433. "0.95": "red"
  434. },//颜色设置
  435. "height": 0,// 高度
  436. "radius": 30, // 半径
  437. "useGround": false,//是否使用贴地模式
  438. "classificationType": 2//分类 是否影响地形,3D切片或同时影响这两者。0:地形、1:3D切片、2:两者。贴地模式下生效
  439. }
  440. ```
  441. ### methods
  442. - **_setPoints(points)_**
  443. 设置点位
  444. - 参数
  445. - `{Array<Object>} points`:点位信息
  446. - 返回值 `heatMapLayer`
  447. ```js
  448. // 点位信息参数
  449. const point = {
  450. "lng": "",//经度
  451. "lat": "", //纬度
  452. "value": 10//强度
  453. }
  454. ```
  455. ## DC.WindLayer
  456. > 风向图层,继承于[Layer](#dc-layer)
  457. ### example
  458. ```js
  459. let layer = new DC.WindLayer('id')
  460. viewer.addLayer(layer)
  461. ```
  462. ### creation
  463. - **_constructor(id,[options])_**
  464. 构造函数
  465. - 参数
  466. - `{String} id`:图层唯一标识
  467. - `{Object} options`:属性配置
  468. - 返回值 `windLayer`
  469. ```js
  470. //options(属性可选)
  471. const options = {
  472. "globalAlpha": 0.9,//透明度
  473. "lineWidth": 1,// 线宽
  474. "colorScale": "#fff",//颜色
  475. "velocityScale": 1 / 25,
  476. "maxAge": 90,
  477. "paths": 800,// 路径数
  478. "frameRate": 20,
  479. "useCoordsDraw": true,
  480. "gpet": true
  481. }
  482. ```
  483. ### methods
  484. - **_setData(data,[options])_**
  485. 设置风向数据
  486. - 参数
  487. - `{Object} data`:风向数据
  488. - `{Object} options`:配置信息,参考构造函数的配置信息
  489. - 返回值 `windLayer`
  490. - **_setOptions(options)_**
  491. 设置风向数据
  492. - 参数
  493. - `{Object} options`:配置信息,参考构造函数的配置信息
  494. - 返回值 `windLayer`
  495. ## DC.ChartLayer
  496. > 图表图层,继承于[Layer](#dc-layer)
  497. ### example
  498. ```js
  499. let chartLayer = new DC.ChartLayer('layer')
  500. viewer.addLayer(chartLayer)
  501. ```
  502. :::warning
  503. 图表图层依赖于 echarts 库,使用前请确保全局变量中能够获取到 echarts
  504. :::
  505. ### creation
  506. - **_constructor([id],[option])_**
  507. 构造函数
  508. - 参数
  509. - `{String} id`:唯一标识
  510. - `{Object} option`:echarts 配置,[详细使用说明](https://www.echartsjs.com/zh/option.html#title)
  511. - 返回值 `chartLayer`
  512. ```js
  513. // options,其他的参数参考 echarts
  514. const options = {
  515. "animation": false, // 必须要加
  516. "GLMap": {}, //地图
  517. "series": [
  518. {
  519. "coordinateSystem": "GLMap" // 坐标系统
  520. }
  521. ]
  522. }
  523. ```
  524. ### methods
  525. - **_setOption(option)_**
  526. 设置点位
  527. - 参数
  528. - `{Object} option`:echarts 配置,[详细使用说明](https://www.echartsjs.com/zh/option.html#title)
  529. - 返回值 `this`