viewer 查看器 用于构建应用程序的基本小部件
new Cesium.Viewer (container, options ) ,container:DOM元素的ID;options:描述初始化选项的对象
options的属性包含
clock 用于控制当前时间的时钟。
var clock = new Cesium.Clock({
startTime : Cesium.JulianDate.fromIso8601("2022-09-29"),
currentTime : Cesium.JulianDate.fromIso8601("2022-09-29"),
stopTime : Cesium.JulianDate.fromIso8601("2022-09-30"),
});
imageryProvider 提供要显示在椭球表面上的图像,不能直接实例化。
this.esri = new Cesium.ArcGisMapServerImageryProvider({
url:"https://services.arcgisonline.com/ArcGIS/rest/services/world_Imagery/MapServer"
})
this.viewer = new Cesium.Viewer("addBuild",{
animation:false,
timeline:false,
baseLayerPicker:false,
imageryProvider:this.esri,
})
terrainProvider 为椭球表面提供地形或其他几何形状
this.esri = new Cesium.ArcGisMapServerImageryProvider({
url:"https://services.arcgisonline.com/ArcGIS/rest/services/world_Imagery/MapServer"
})
this.viewer = new Cesium.Viewer("addBuild",{
animation:false,
timeline:false,
baseLayerPicker:false,
imageryProvider:this.esri,
terrainProvider: new Cesium.CesiumTerrainProvider({
url:Cesium.IonResource.fromAssetId(1),
requestVertexNormals:true,
requestWaterMask:true
})
})
viewer 属性
- animation 获取动画小部件
- baseLayerPicker 默认地图按钮设置为false,否则会影响新地图加载
- camera 获取相机
- canvas 获取画布
- scene 获取场景
- entities 获取未绑定到特定数据源的实体的集合
等等
camera 相机信息
position (位置)heading (方位角,绕z轴旋转)pitch(俯仰角,绕Y轴旋转)roll(翻滚角,绕x轴旋转)
this.camera = this.viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(121.49,31.23, 3000.0),
orientation:{
heading:0,
pitch:-90,
roll:0
}
})
相机设置的三种方式:
setView设置相机的位置,两种方式:Cartesian3、Rectangle
viewer.camera.setView({
destination : Cesium.Cartesian3.fromDegrees(116.435314,39.960521, 15000.0),
orientation: {
heading : Cesium.Math.toRadians(20.0),
pitch : Cesium.Math.toRadians(-90.0),
roll : 0.0
}
});
viewer.camera.setView({
destination: Cesium.Rectangle.fromDegrees(0.0, 20.0, 10.0, 30.0),
orientation: {
heading : Cesium.Math.toRadians(20.0),
pitch : Cesium.Math.toRadians(-90.0),
roll : 0
}
});
flyTo 将相机从当前位置移动到新位置
viewer.camera.flyTo({
destination :Cesium.Cartesian3.fromDegrees(116.435314,39.960521, 15000.0),
orientation: {
heading :Cesium.Math.toRadians(20.0),
pitch :Cesium.Math.toRadians(-90.0),
roll :0
},
duration:5,
complete:function () {
},
cancle:function () {
},
pitchAdjustHeight:-90,
maximumHeight:5000,
flyOverLongitude:100,
});
lookAt 使用目标和偏移量设置摄像机的位置和方向。目标必须在世界坐标
var viewer = new Cesium.Viewer('cesiumContainer');
var center = Cesium.Cartesian3.fromDegrees(114.44455, 22.0444);
var heading = Cesium.Math.toRadians(50.0);
var pitch = Cesium.Math.toRadians(-20.0);
var range = 5000.0;
viewer.camera.lookAt(center, new Cesium.HeadingPitchRange(heading, pitch, range));
scene 场景
primitives:PrimitiveCollection 原始体集合,集合可以被添加到构成层次结构的集合中
var billboards = new Cesium.BillboardCollection();
var labels = new Cesium.LabelCollection();
var collection = new Cesium.PrimitiveCollection();
collection.add(billboards);
scene.primitives.add(collection);
scene.primitives.add(labels);
camera 获取或者设置相机
环境对象:
skyAtmosphere(大气圈)、shyBox(天空盒)、sun(太阳)、moom(月亮)、flog(雾化)、ParticleSystem(粒子系统)
primitive 几何实例添加
scene.primitives.add(new Cesium.Primitive({
geometryInstances : instance,
appearance : new Cesium.EllipsoidSurfaceAppearance({
material : Cesium.Material.fromType('Checkerboard')
})
}));
groundPrimitives 贴地几何实例
var rectangleInstance = new Cesium.GeometryInstance({
geometry : new Cesium.RectangleGeometry({
rectangle : Cesium.Rectangle.fromDegrees(-140.0, 30.0, -100.0, 40.0)
}),
id : 'rectangle',
attributes : {
color : new Cesium.ColorGeometryInstanceAttribute(0.0, 1.0, 1.0, 0.5)
}
});
scene.primitives.add(new Cesium.GroundPrimitive({
geometryInstances : rectangleInstance
}));
其他操作
vue导入
- 下载资源包,拿到Cesium文件夹,放入public文件夹中
- index 中引入widgets.css样式及Cesium.js
- mounted挂载并使用
若geojson静态资源参照官方无法加载,则可参照如下
- npm 安装json-loader
- config.js配置
configureWebpack: {
module: {
rules: [
{
test: /\.geojson$/,
loader: 'json-loader'
}
]
},
- 通过require引入
let url = require ("../../public/saaets/sampleNeighborhoods.geojson")
let neighborHoodsPromise = Cesium.GeoJsonDataSource.load(url,{
clampToGround: true
})