代码:
DOCTYPE html>
<html>
<head>
<title> hello word title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src = "../Build/Cesium/Cesium.js">script>
<link href="../Build/Cesium/Widgets/widgets.css" rel="stylesheet">
head>
<body>
<div id="cesiumContainer">div>
<div id = "latlng_show" style="width:120px;height:500px;position:absolute;top:10px;left:20px;z-index:1;font-size:15px;">
<div style="width:100px;height:30px;float:right;">
<font size="1" color="white">经 度: <span id="longitude_show">span>font>
div>
<div style="width:100px;height:30px;float:right;">
<font size="1" color="white">维 度: <span id="latitude_show">span>font>
div>
<div style="width:120px;height:30px;float:right;">
<font size="1" color="white">视角高: <span id="altitude_show">span>kmfont>
div>
div>
body>
html>
<script>
//两端点
var czml = [{
"id" : "document",
"name" : "CZML Position Definitions",
"version" : "1.0"
}, {
"id" : "point1",
"name": "point in cartographic degrees",
"position" : {
"cartographicDegrees" : [-119,35.1219512195122,0]
},
"point": {
"color": {
"rgba": [100, 0, 200, 255]
},
"outlineColor": {
"rgba": [200, 0, 200, 255]
},
"pixelSize": {
"number": 10
}
}
}, {
"id" : "point2",
"name": "point in cartesian coordinates",
"position" : {
"cartographicDegrees" : [-79,40,0]
},
"point": {
"color": {
"rgba": [0, 100, 200, 255]
},
"outlineColor": {
"rgba": [200, 0, 200, 255]
},
"pixelSize": {
"number": 10
}
}
}];
//飞行轨迹
var czmlLine = [{
"id" : "document",
"name" : "CZML Geometries: Polyline",
"version" : "1.0"
}, {
"id" : "dashedLine",
"name" : "Blue dashed line",
"polyline" : {
"positions" : {
"cartographicDegrees" : [
-119,35.1219512195122,0,
-118,35.2439024390244,48750,
-117,35.3658536585366,95000,
-116,35.4878048780488,138750,
-115,35.609756097561,180000,
-114,35.7317073170732,218750,
-113,35.8536585365854,255000,
-112,35.9756097560976,288750,
-111,36.0975609756098,320000,
-110,36.219512195122,348750,
-109,36.3414634146341,375000,
-108,36.4634146341463,398750,
-107,36.5853658536585,420000,
-106,36.7073170731707,438750,
-105,36.8292682926829,455000,
-104,36.9512195121951,468750,
-103,37.0731707317073,480000,
-102,37.1951219512195,488750,
-101,37.3170731707317,495000,
-100,37.4390243902439,498750,
-99,37.5609756097561,500000,
-98,37.6829268292683,498750,
-97,37.8048780487805,495000,
-96,37.9268292682927,488750,
-95,38.0487804878049,480000,
-94,38.1707317073171,468750,
-93,38.2926829268293,455000,
-92,38.4146341463415,438750,
-91,38.5365853658537,420000,
-90,38.6585365853659,398750,
-89,38.780487804878,375000,
-88,38.9024390243902,348750,
-87,39.0243902439024,320000,
-86,39.1463414634146,288750,
-85,39.2682926829268,255000,
-84,39.390243902439,218750,
-83,39.5121951219512,180000,
-82,39.6341463414634,138750,
-81,39.7560975609756,95000,
-80,39.8780487804878,48750,
-79,40,0
]
},
"material" : {
"polylineDash" : {
"color" : {
"rgba" : [255, 0, 0, 255]
}
}
},
"width" : 2
}
}];
//移动的点
var czmlMP = [{
"id" : "document",
"name" : "CZML Point - Time Dynamic",
"version" : "1.0"
}, {
"id" : "point",
"availability" :"2012-08-04T16:00:00Z/2012-08-04T17:06:66Z",
"position" : {
"epoch" : "2012-08-04T16:00:00Z",
"cartographicDegrees" : [
100,-119,35.1219512195122,0,
200,-118,35.2439024390244,48750,
300,-117,35.3658536585366,95000,
400,-116,35.4878048780488,138750,
500,-115,35.609756097561,180000,
600,-114,35.7317073170732,218750,
700,-113,35.8536585365854,255000,
800,-112,35.9756097560976,288750,
900,-111,36.0975609756098,320000,
1000,-110,36.219512195122,348750,
1100,-109,36.3414634146341,375000,
1200,-108,36.4634146341463,398750,
1300,-107,36.5853658536585,420000,
1400,-106,36.7073170731707,438750,
1500,-105,36.8292682926829,455000,
1600,-104,36.9512195121951,468750,
1700,-103,37.0731707317073,480000,
1800,-102,37.1951219512195,488750,
1900,-101,37.3170731707317,495000,
2000,-100,37.4390243902439,498750,
2100,-99,37.5609756097561,500000,
2200,-98,37.6829268292683,498750,
2300,-97,37.8048780487805,495000,
2400,-96,37.9268292682927,488750,
2500,-95,38.0487804878049,480000,
2600,-94,38.1707317073171,468750,
2700,-93,38.2926829268293,455000,
2800,-92,38.4146341463415,438750,
2900,-91,38.5365853658537,420000,
3000,-90,38.6585365853659,398750,
3100,-89,38.780487804878,375000,
3200,-88,38.9024390243902,348750,
3300,-87,39.0243902439024,320000,
3400,-86,39.1463414634146,288750,
3500,-85,39.2682926829268,255000,
3600,-84,39.390243902439,218750,
3700,-83,39.5121951219512,180000,
3800,-82,39.6341463414634,138750,
3900,-81,39.7560975609756,95000,
4000,-80,39.8780487804878,48750,
4100,-79,40,0
]
},
"point" : {
"color" : {
"rgba" : [255, 255, 255, 128]
},
"outlineColor" : {
"rgba" : [255, 0, 0, 128]
},
"outlineWidth" : 3,
"pixelSize" : 15
}
}];
var viewer = new Cesium.Viewer('cesiumContainer', {
imageryProvider : Cesium.createTileMapServiceImageryProvider({
url : Cesium.buildModuleUrl('Assets/Textures/NaturalEarthII') //离线地图
}),
shouldAnimate : true,
geocoder:false,
homeButton:false,
sceneModePicker:false,
baseLayerPicker : false,
//baseLayerPicker:false,
//animation:false,
//creditContainer:"credit"
timeline:true,
vrButton:false
});
var longitude_show = document.getElementById("longitude_show");
var latitude_show = document.getElementById("latitude_show");
var altitude_show = document.getElementById("altitude_show");
var canvas=viewer.scene.canvas;
var ellipsoid = viewer.scene.globe.ellipsoid;
var handler = new Cesium.ScreenSpaceEventHandler(canvas);
handler.setInputAction(function(movement){
var cartesian = viewer.camera.pickEllipsoid(movement.endPosition,ellipsoid);
if(cartesian){
var cartographic=viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);
var lat_String = Cesium.Math.toDegrees(cartographic.latitude).toFixed(4);
var log_String = Cesium.Math.toDegrees(cartographic.longitude).toFixed(4);
var alti_String = (viewer.camera.positionCartographic.height/1000).toFixed(2);
longitude_show.innerHTML = log_String;
latitude_show.innerHTML = lat_String;
altitude_show.innerHTML = alti_String;
}
},Cesium.ScreenSpaceEventType.MOUSE_MOVE);
/*
//添加一个球体
var redSphere = viewer.entities.add({
name : 'Red sphere with black outline',
position: Cesium.Cartesian3.fromDegrees(-79,40,-100000),
ellipsoid : {
radii : new Cesium.Cartesian3(300000.0, 300000.0, 300000.0),
//material : Cesium.Color.RED.withAlpha(0.5),
//outline : true,
//outlineColor : Cesium.Color.BLACK
fill : false,
outline : true,
outlineColor : Cesium.Color.RED,
slicePartitions : 12,
stackPartitions : 13
}
});
*/
//--------------------------热气球----------------------------------------------
/*
function createModel(url, height) {
viewer.entities.removeAll();
var position = Cesium.Cartesian3.fromDegrees(-79,40, height);
var heading = Cesium.Math.toRadians(135);
var pitch = 0;
var roll = 0;
var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);
var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);
var entity = viewer.entities.add({
name : url,
position : position,
orientation : orientation,
model : {
uri : url,
minimumPixelSize : 128,
maximumScale : 20000
}
});
viewer.trackedEntity = entity;
}
createModel('../Apps/SampleData/models/CesiumBalloon/CesiumBalloon.glb', 0.0);
*/
//--------------------------热气球----------------------------------------------
//createModel('../Apps/SampleData/models/CesiumMan/Cesium_Man.glb', 0.0);
//-------------------------------------------------------------爆炸效果
/*
var scene = viewer.scene;
scene.debugShowFramesPerSecond = true;
Cesium.Math.setRandomNumberSeed(315);
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883));
var emitterInitialLocation = new Cesium.Cartesian3(0.0, 0.0, 100.0);
var particleCanvas;
function getImage() {
if (!Cesium.defined(particleCanvas)) {
particleCanvas = document.createElement('canvas');
particleCanvas.width = 20;
particleCanvas.height = 20;
var context2D = particleCanvas.getContext('2d');
context2D.beginPath();
context2D.arc(8, 8, 8, 0, Cesium.Math.TWO_PI, true);
context2D.closePath();
context2D.fillStyle = 'rgb(255, 255, 255)';
context2D.fill();
}
return particleCanvas;
}
var minimumExplosionSize = 3000.0;
var maximumExplosionSize = 10000.0;
var particlePixelSize = new Cesium.Cartesian2(7.0, 7.0);
var burstSize = 400.0;
var lifetime = 10.0;
var numberOfFireworks = 1.0;
var emitterModelMatrixScratch = new Cesium.Matrix4();
function createFirework(offset, color, bursts) {
var position = Cesium.Cartesian3.add(emitterInitialLocation, offset, new Cesium.Cartesian3());
var emitterModelMatrix = Cesium.Matrix4.fromTranslation(position, emitterModelMatrixScratch);
var particleToWorld = Cesium.Matrix4.multiply(modelMatrix, emitterModelMatrix, new Cesium.Matrix4());
var worldToParticle = Cesium.Matrix4.inverseTransformation(particleToWorld, particleToWorld);
var size = Cesium.Math.randomBetween(minimumExplosionSize, maximumExplosionSize);
var particlePositionScratch = new Cesium.Cartesian3();
var force = function(particle) {
var position = Cesium.Matrix4.multiplyByPoint(worldToParticle, particle.position, particlePositionScratch);
if (Cesium.Cartesian3.magnitudeSquared(position) >= size * size) {
Cesium.Cartesian3.clone(Cesium.Cartesian3.ZERO, particle.velocity);
}
};
var normalSize = (size - minimumExplosionSize) / (maximumExplosionSize - minimumExplosionSize);
var minLife = 0.3;
var maxLife = 1.0;
var life = normalSize * (maxLife - minLife) + minLife;
scene.primitives.add(new Cesium.ParticleSystem({
image : getImage(),
startColor : color,
endColor : color.withAlpha(0.0),
particleLife : life,
speed : 100.0,
imageSize : particlePixelSize,
emissionRate : 0,
emitter : new Cesium.SphereEmitter(0.1),
bursts : bursts,
lifetime : lifetime,
updateCallback : force,
modelMatrix : modelMatrix,
emitterModelMatrix : emitterModelMatrix
}));
}
var xMin = -10000.0;
var xMax = 10000.0;
var yMin = -8000.0;
var yMax = 10000.0;
var zMin = -5000.0;
var zMax = 5000.0;
var colorOptions = [{
minimumRed : 0.75,
green : 0.0,
minimumBlue : 0.0,
alpha : 1.0
}];
var x = Cesium.Math.randomBetween(xMin, xMax);
var y = Cesium.Math.randomBetween(yMin, yMax);
var z = Cesium.Math.randomBetween(zMin, zMax);
var offset = new Cesium.Cartesian3(x, y, z);
var color = Cesium.Color.fromRandom(colorOptions[0]);
var bursts = [];
for (var j = 0; j < 3; ++j) {
bursts.push(new Cesium.ParticleBurst({
time : Cesium.Math.nextRandomNumber() * lifetime,
minimum : burstSize,
maximum : burstSize
}));
}
createFirework(offset, color, bursts);
var camera = viewer.scene.camera;
var cameraOffset = new Cesium.Cartesian3(-300.0, 0.0, 0.0);
camera.lookAtTransform(modelMatrix, cameraOffset);
camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
var toFireworks = Cesium.Cartesian3.subtract(emitterInitialLocation, cameraOffset, new Cesium.Cartesian3());
Cesium.Cartesian3.normalize(toFireworks, toFireworks);
var angle = Cesium.Math.PI_OVER_TWO - Math.acos(Cesium.Cartesian3.dot(toFireworks, Cesium.Cartesian3.UNIT_Z));
camera.lookUp(angle);
*/
//-------------------------------------------------------------爆炸效果
//--------------------------------------防护罩---------------------------------
var angleJ = 0;
var radius = 0;
var step = 10;
var circleNum = 20;
var g = 800000;
var totalSpoke = [];//辐条坐标
for(;radius<circleNum;radius++){
var circle = []; //同心圆坐标
for(angleJ = 0;angleJ<=360;angleJ+=step){//每个圆上有多少个点8
var radians = Cesium.Math.toRadians(angleJ);
var j = radius*Math.cos(radians);
var w = radius*Math.sin(radians);
//防止出现负0
if(Math.abs(j)==0){
j=0;
}
if(Math.abs(w)==0){
w=0;
}
//小数点保留两位。
w = Math.floor(w*100)/100;
j = Math.floor(j*100)/100;
totalSpoke.push(j);
totalSpoke.push(w);
totalSpoke.push(g);
circle.push(j);
circle.push(w);
circle.push(g);
//console.log("j:"+j+" w:"+w);
g-=2000/30*step;
}
//console.log("------------------------------------------------------");
viewer.entities.add({
name : 'sun system protected umbrella!',
polyline : {
positions : Cesium.Cartesian3.fromDegreesArrayHeights(circle),
width : 1,
material : new Cesium.PolylineOutlineMaterialProperty({
color : Cesium.Color.ORANGE,
outlineWidth : 0,
// outlineColor : Cesium.Color.BLACK
})
}
});
}
var i = 0;
var count = 0;
var linshi = [];
for(;i<360/step*3;i+=3){ //共个辐条
var spoke = [];
var j = 0;
for(;j<totalSpoke.length;j+=((360/step)+1)*3){ //找每个辐条上的点
spoke.push(totalSpoke[j+i]);
spoke.push(totalSpoke[j+i+1]);
spoke.push(totalSpoke[j+i+2]);
//console.log(totalSpoke[j+i]+" ");
//console.log(totalSpoke[j+i+1]+" ");
//console.log(totalSpoke[j+i+2]);
//console.log("##");
//console.log(totalSpoke[j+i]+" j+i");
//console.log(totalSpoke[j+i+1]+" j+i+1");
}
//console.log("--------------" +count++ +"-------------");
viewer.entities.add({
name : 'Orange line with black outline at height and following the surface',
polyline : {
positions : Cesium.Cartesian3.fromDegreesArrayHeights(spoke),
width : 1,
material : new Cesium.PolylineOutlineMaterialProperty({
color : Cesium.Color.ORANGE,
outlineWidth : 0,
// outlineColor : Cesium.Color.BLACK
})
}
});
}
/*
Cesium.Math.setRandomNumberSeed(3);
var lon =100, lat=30, radius = 10;
for (var i = 0; i <= 360; i += 45) {
var radians = Cesium.Math.toRadians(i);
circle.push(lon + (radius * Math.cos(radians)));
console.log(lon + (radius * Math.cos(radians)));
circle.push(lat + (radius * Math.sin(radians)));
console.log(lat + (radius * Math.sin(radians)));
circle.push(Cesium.Math.nextRandomNumber() * 500 + 1750);
console.log(Cesium.Math.nextRandomNumber() * 500 + 1750);
console.log("----------------------");
}
*/
/*
var dashedLine = viewer.entities.add({
name : 'Blue dashed line',
polyline : {
positions : Cesium.Cartesian3.fromDegreesArrayHeights(circle),
width : 1,
material : new Cesium.PolylineDashMaterialProperty({
color: Cesium.Color.RED
})
}
});
*/
var dashedLine2 = viewer.entities.add({
name : 'Blue dashed line',
polyline : {
positions : Cesium.Cartesian3.fromDegreesArrayHeights([0, 0, 500000,
179, 0, 500000]),
width : 4,
material : new Cesium.PolylineDashMaterialProperty({
color: Cesium.Color.RED
})
}
});
var dashedLine3 = viewer.entities.add({
name : 'Blue dashed line',
polyline : {
positions : Cesium.Cartesian3.fromDegreesArrayHeights([0, 0, 500000,
0, 179, 500000]),
width : 4,
material : new Cesium.PolylineDashMaterialProperty({
color: Cesium.Color.BLUE
})
}
});
//--------------------------------------防护罩---------------------------------
//--------------------------------保护伞下面的锥形---------------------------------
var gc = 1600000; //高程
var jd = -90; //经度
var wd = 0; //纬度
var bottomRadius = 2000000; //半径
//上盖
var position = Cesium.Cartesian3.fromDegrees(jd, wd, gc);
var redCone = viewer.entities.add({
name : 'Red cone',
position: position,
cylinder : {
length : 20000.0,
topRadius : 0.0,
bottomRadius : bottomRadius,
material : Cesium.Color.ORANGE.withAlpha(0.1),
fill:true,
outline:true,
outlineColor:Cesium.Color.ORANGE.withAlpha(0.2)
}
});
var greenCircle = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(jd, wd, 0),
name : 'Green circle at height with outline',
ellipse : {
semiMinorAxis : bottomRadius,
semiMajorAxis : bottomRadius,
height: gc+gc/4,
material : Cesium.Color.ORANGE.withAlpha(0.2),
fill:false,
outline : true ,// height must be set for outline to display
outlineColor: Cesium.Color.ORANGE.withAlpha(0.2)
}
});
var position2 = Cesium.Cartesian3.fromDegrees(jd, wd, gc/2);
var heading2 = 0;
var pitch2 = Cesium.Math.toRadians(180);
var roll2 = 0;
var hpr2 = new Cesium.HeadingPitchRoll(heading2,pitch2,roll2);
var orientation2 = Cesium.Transforms.headingPitchRollQuaternion(position2,hpr2);
//下底
var redCone = viewer.entities.add({
name : 'Red cone',
position: position2,
orientation:orientation2,
cylinder : {
length : gc,
topRadius : 0.0,
bottomRadius : bottomRadius,
material : Cesium.Color.YELLOW.withAlpha(0.1),
fill:true,
//outline:true,
outlineColor:Cesium.Color.YELLOW.withAlpha(0.08)
}
});
//锥点
var czmlPoint = [{
"id" : "document",
"name" : "CZML Position Definitions",
"version" : "1.0"
}, {
"id" : "point1",
"name": "point in cartographic degrees",
"position" : {
"cartographicDegrees" : [jd, wd, 0.0]
},
"point": {
"color": {
"rgba": [255, 0, 0, 255]
},
"outlineColor": {
"rgba": [255, 0, 0, 255]
},
"pixelSize": {
"number": 6
}
}
}];
//--------------------------------保护伞下面的锥形---------------------------------
//--------------------------------------粒子系统--------------------------------
/*
var planePosition = Cesium.Cartesian3.fromDegrees(0.0, 0.0, 500000.0);
var particlesOffset = new Cesium.Cartesian3(-8.950115473940969, 34.852766731753945, -30.235411095432937);
var cameraLocation = Cesium.Cartesian3.add(planePosition, particlesOffset, new Cesium.Cartesian3());
var resetCamera = function() {
viewer.camera.lookAt(cameraLocation, new Cesium.Cartesian3(-450, -300, 200));
};
resetCamera();
// Draw particle image to a canvas
var particleCanvas;
function getImage() {
if (!Cesium.defined(particleCanvas)) {
particleCanvas = document.createElement('canvas');
particleCanvas.width = 150;
particleCanvas.height = 100;
var context2D = particleCanvas.getContext('2d');
context2D.beginPath();
context2D.arc(8, 8, 8, 0, Cesium.Math.TWO_PI, true);
context2D.closePath();
context2D.fillStyle = 'rgb(255, 255, 255)';
context2D.fill();
}
return particleCanvas;
}
// Add plane to scene
var hpr = new Cesium.HeadingPitchRoll(0.0, Cesium.Math.PI_OVER_TWO, 0.0);
var orientation = Cesium.Transforms.headingPitchRollQuaternion(planePosition, hpr);
var entity = viewer.entities.add({
model : {
uri : '../Apps/SampleData/models/CesiumAir/Cesium_Air.gltf',
scale : 10
},
position : planePosition,
orientation : orientation
});
// creating particles model matrix
var translationOffset = Cesium.Matrix4.fromTranslation(particlesOffset, new Cesium.Matrix4());
var translationOfPlane = Cesium.Matrix4.fromTranslation(planePosition, new Cesium.Matrix4());
var particlesModelMatrix = Cesium.Matrix4.multiplyTransformation(translationOfPlane, translationOffset, new Cesium.Matrix4());
// creating the particle systems
var cometOptions = {
numberOfSystems : 100.0,
iterationOffset : 0.003,
cartographicStep : 0.0000001,
baseRadius : 0.0005,
colorOptions : [{
red : 0.6,
green : 0.6,
blue : 0.6,
alpha : 1.0
}, {
red : 0.6,
green : 0.6,
blue : 0.9,
alpha : 0.9
}, {
red : 0.5,
green : 0.5,
blue : 0.7,
alpha : 0.5
}]
};
var scratchCartesian3 = new Cesium.Cartesian3();
var scratchCartographic = new Cesium.Cartographic();
var forceFunction = function(options, iteration) {
return function(particle, dt) {
dt = Cesium.Math.clamp(dt, 0.0, 5);
scratchCartesian3 = Cesium.Cartesian3.normalize(particle.position, new Cesium.Cartesian3());
scratchCartesian3 = Cesium.Cartesian3.multiplyByScalar(scratchCartesian3, -40.0 * dt, scratchCartesian3);
scratchCartesian3 = Cesium.Cartesian3.add(particle.position, scratchCartesian3, scratchCartesian3);
scratchCartographic = Cesium.Cartographic.fromCartesian(scratchCartesian3, Cesium.Ellipsoid.WGS84, scratchCartographic);
var angle = Cesium.Math.PI * 2.0 * iteration / options.numberOfSystems;
iteration += options.iterationOffset;
scratchCartographic.longitude += Math.cos(angle) * options.cartographicStep * 30.0 * dt;
scratchCartographic.latitude += Math.sin(angle) * options.cartographicStep * 30.0 * dt;
particle.position = Cesium.Cartographic.toCartesian(scratchCartographic);
};
};
var matrix4Scratch = new Cesium.Matrix4();
var scratchAngleForOffset = 0.0;
var scratchOffset = new Cesium.Cartesian3();
var imageSize = new Cesium.Cartesian2(15.0, 15.0);
function createParticleSystems(options, systemsArray) {
var length = options.numberOfSystems;
for (var i = 0; i < length; ++i) {
scratchAngleForOffset = Math.PI * 2.0 * i / options.numberOfSystems;
scratchOffset.x += options.baseRadius * Math.cos(scratchAngleForOffset);
scratchOffset.y += options.baseRadius * Math.sin(scratchAngleForOffset);
var emitterModelMatrix = Cesium.Matrix4.fromTranslation(scratchOffset, matrix4Scratch);
var color = Cesium.Color.fromRandom(options.colorOptions[i % options.colorOptions.length]);
var force = forceFunction(options, i);
var item = viewer.scene.primitives.add(new Cesium.ParticleSystem({
image : getImage(),
startColor : color,
endColor : color.withAlpha(0.0),
particleLife : 3.5,
speed : 0.00005,
imageSize : imageSize,
emissionRate : 30.0,
emitter : new Cesium.CircleEmitter(0.1),
lifetime : 1,
updateCallback : force,
modelMatrix : particlesModelMatrix,
emitterModelMatrix : emitterModelMatrix
}));
systemsArray.push(item);
}
}
var cometSystems = [];
createParticleSystems(cometOptions, cometSystems);
// toolbar elements
function showAll(systemsArray, show) {
var length = systemsArray.length;
for (var i = 0; i < length; ++i) {
systemsArray[i].show = show;
}
}
showAll(cometSystems, true);
resetCamera();
*/
//--------------------------------------粒子系统--------------------------------
//---------------------------------------------------------------------------
//Enable lighting based on sun/moon positions
//viewer.scene.globe.enableLighting = true;
//Enable depth testing so things behind the terrain disappear.
//viewer.scene.globe.depthTestAgainstTerrain = true;
//Set the random number seed for consistent results.
Cesium.Math.setRandomNumberSeed(3);
//Set bounds of our simulation time
var start = Cesium.JulianDate.fromDate(new Date(2015, 2, 25, 16));
var stop = Cesium.JulianDate.addSeconds(start, 410, new Cesium.JulianDate());
//Make sure viewer is at the desired time.
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; //Loop at the end
viewer.clock.multiplier = 10;
//Set timeline to simulation bounds
viewer.timeline.zoomTo(start, stop);
//Generate a random circular pattern with varying heights.
//让飞机绕圆圈飞行。
/*
function computeCirclularFlight(lon, lat, radius) {
var property = new Cesium.SampledPositionProperty();
for (var i = 0; i <= 360; i += 30) {
var radians = Cesium.Math.toRadians(i);
var time = Cesium.JulianDate.addSeconds(start, i, new Cesium.JulianDate());
var position = Cesium.Cartesian3.fromDegrees(lon + (radius * 1000*1.5 * Math.cos(radians)), lat + (radius *1000* Math.sin(radians)), Cesium.Math.nextRandomNumber() * 500 + 175000);
console.log(lon + (radius * 1000*1.5 * Math.cos(radians)));
console.log(lat + (radius *1000* Math.sin(radians)));
console.log(Cesium.Math.nextRandomNumber() * 500 + 175000);
console.log("-----");
property.addSample(time, position);
//Also create a point for each sample we generate.
viewer.entities.add({
position : position,
point : {
pixelSize : 2,
color : Cesium.Color.TRANSPARENT,
outlineColor : Cesium.Color.YELLOW,
outlineWidth : 1
}
});
}
return property;
}
*/
var arr = [
[-119,35.1219512195122,0],
[-118,35.2439024390244,48750],
[-117,35.3658536585366,95000],
[-116,35.4878048780488,138750],
[-115,35.609756097561,180000],
[-114,35.7317073170732,218750],
[-113,35.8536585365854,255000],
[-112,35.9756097560976,288750],
[-111,36.0975609756098,320000],
[-110,36.219512195122,348750],
[-109,36.3414634146341,375000],
[-108,36.4634146341463,398750],
[-107,36.5853658536585,420000],
[-106,36.7073170731707,438750],
[-105,36.8292682926829,455000],
[-104,36.9512195121951,468750],
[-103,37.0731707317073,480000],
[-102,37.1951219512195,488750],
[-101,37.3170731707317,495000],
[-100,37.4390243902439,498750],
[-99,37.5609756097561,500000],
[-98,37.6829268292683,498750],
[-97,37.8048780487805,495000],
[-96,37.9268292682927,488750],
[-95,38.0487804878049,480000],
[-94,38.1707317073171,468750],
[-93,38.2926829268293,455000],
[-92,38.4146341463415,438750],
[-91,38.5365853658537,420000],
[-90,38.6585365853659,398750],
[-89,38.780487804878,375000],
[-88,38.9024390243902,348750],
[-87,39.0243902439024,320000],
[-86,39.1463414634146,288750],
[-85,39.2682926829268,255000],
[-84,39.390243902439,218750],
[-83,39.5121951219512,180000],
[-82,39.6341463414634,138750],
[-81,39.7560975609756,95000],
[-80,39.8780487804878,48750],
[-79,40,0]
];
function computeCirclularFlight(lon, lat, radius) {
var property = new Cesium.SampledPositionProperty();
for(var i = 0;i<arr.length;i++){
var time = Cesium.JulianDate.addSeconds(start, i*10, new Cesium.JulianDate());
var position = Cesium.Cartesian3.fromDegrees(arr[i][0],arr[i][1],arr[i][2]);
property.addSample(time, position);
//Also create a point for each sample we generate.
/*viewer.entities.add({
position : position,
point : {
pixelSize : 2,
color : Cesium.Color.TRANSPARENT,
outlineColor : Cesium.Color.RED,
outlineWidth : 1
}
});*/
//console.log(arr[i][j]);
}
return property;
}
//Compute the entity position property.
//var position = computeCirclularFlight();
var position = computeCirclularFlight(-100, 30, 0.03);
//Actually create the entity
var entity = viewer.entities.add({
//Set the entity availability to the same interval as the simulation time.
availability : new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
start : start,
stop : stop
})]),
//Use our computed positions
position : position,
//Automatically compute orientation based on position movement.
orientation : new Cesium.VelocityOrientationProperty(position),
//Load the Cesium plane model to represent the entity
model : {
//uri : '../Apps/SampleData/models/CesiumMilkTruck/CesiumMilkTruck.gltf',
uri : '../Apps/SampleData/models/CesiumAir/Cesium_Air.gltf',
minimumPixelSize : 64
},
//Show the path as a pink line sampled in 1 second increments.
/*path : {
resolution : 1,
material : new Cesium.PolylineGlowMaterialProperty({
glowPower : 0.2,
color : Cesium.Color.YELLOW
}),
width : 2
}*/
});
//Add button to view the path from the top down
//viewer.zoomTo(viewer.entities, new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-90)));
//viewer.trackedEntity = undefined;
//viewer.zoomTo(viewer.entities, new Cesium.HeadingPitchRange(Cesium.Math.toRadians(-90), Cesium.Math.toRadians(-15), 7500));
viewer.zoomTo(viewer.entities, new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-90),7500000));
//隐藏版权信息
viewer._cesiumWidget._creditContainer.style.display = "none";
//-------------------------------------------------------------------------------
//var viewer = new Cesium.Viewer('cesiumContainer');
//两端点
viewer.dataSources.add(Cesium.CzmlDataSource.load(czml));
viewer.dataSources.add(Cesium.CzmlDataSource.load(czmlPoint));
//移动的点
//viewer.dataSources.add(Cesium.CzmlDataSource.load(czmlMP ));
//飞行轨迹
viewer.dataSources.add(Cesium.CzmlDataSource.load(czmlLine ));
//viewer.dataSources.add(Cesium.CzmlDataSource.load(czmlzhui));
//viewer.zoomTo(dataSourcePromise);
script>