外观
mars3d-cesium库介绍
601字约2分钟
2025-01-25
因为cesium本身也有一些bug或需要优化的地方,Mars3D使用的cesium也修改了部分cesium源码文件,并重新发布了mars3d-cesium
库(是mars3d的核心依赖库),下面对该库做下介绍。
1. mars3d-cesium修改原则
- 主要扩展都在mars3d类库中,无法外部扩展的,才会在内部去修改cesium源码;
- 尽量不改变ceisum本身逻辑,通过参数来可控改变;
2. 修改内容
- 修改的每一行代码处首尾都有注释说明
package.json
、gulpfile.js
修改了包名为mars3d-cesium
- 修改了文件,约30个左右,具体见
修改说明文档.xls
中(该文档仅提供给购买了SDK源码的客户)。
3. mars3d中使用Cesium原生类
可以直接使用mars3d.Cesium.*
来获取Cesium原生类
示例代码:
import * as mars3d from "mars3d"
const Cesium = mars3d.Cesium
const graphic = new mars3d.graphic.DivGraphic({
position: [116.960075, 31.19609, 237.4],
style: {
html: `<div class="marsGreenGradientPnl" >安徽欢迎您</div>`,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM
},
})
map.graphicLayer.addGraphic(graphic)
// 在指定时间范围显示对象 0-10,20-30,40-max
const now = map.clock.currentTime
graphic.availability = [
{ start: now, stop: Cesium.JulianDate.addSeconds(now, 10, new Cesium.JulianDate()) },
{ start: Cesium.JulianDate.addSeconds(now, 20, new Cesium.JulianDate()), stop: Cesium.JulianDate.addSeconds(now, 30, new Cesium.JulianDate()) },
{ start: Cesium.JulianDate.addSeconds(now, 40, new Cesium.JulianDate()), stop: "2999-01-01 00:00:00" }
]
4 mars3d中获取原生Cesium对象
基本mars3d使用的所有Cesium类在其对应内部都有暴露使用的Cesium对象属性,
以下是我们列出的常用替代关系清单,如果你使用的一些Cesium原生代码也可以通过下面清单说明,直接使用mars3d暴露的原生cesium属性对象。
mars3d类 | 内部Cesium对象 | 说明 |
---|---|---|
mars3d.Map | map.viewer | 地球主对象 |
mars3d.layer.BaseTileLayer | tileLayer.layer 和 tileLayer.imageryProvider | 瓦片图层对象 |
mars3d.layer.TilesetLayer | tilesetLayer.tileset (在readyPromise异步获取使用) | 3dtiles三维模型图层 |
mars3d.graphic.BaseGraphic | graphic.czmObject (不同子类实现) | 矢量数据对象,不同子类中实现,比如下面 Polygon |
mars3d.graphic.PolygonEntity | graphic.czmObject 或 graphic.entity | Entity矢量数据对象,其他类型使用相似 |
mars3d.graphic.PolygonPrimitive | graphic.czmObject 或 graphic.primitive | Primitive矢量数据对象,其他类型使用相似 |