代码拉取完成,页面将自动刷新
同步操作将从 lai/cesium-city3d 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/**
* 配置
*/
var configs = {
d3map: null,
mapDom: "cesiumContainer",
mapUrl: "examples/images/BlackMarble_2016.jpg",
mapOptions: {
shouldAnimate: true,
useDefaultRenderLoop: true,
infoBox: false,
contextOptions: {
webgl: {
alpha: false,
antialias: true,
preserveDrawingBuffer: true,
failIfMajorPerformanceCaveat: false,
depth: true,
stencil: false,
anialias: false
},
}
},
sceneUrl: "http://www.supermapol.com/realspace/services/3D-CQmodel_wireframe_2000/rest/realspace"
}
/**
* 返回的 Cesium对象
* @param {*} Cesium
*/
function onloadApp() {
try {
//初始化三维球
var d3map = new D3()
d3map.init(); //d3map.initGUI()
document.getElementsByClassName('cesium-widget-credits')[0].style.display = 'none'
} catch (error) {
console.log(error)
}
configs.d3map = d3map
};
/**
* 三维对象
*/
function D3() {
this._viewer = undefined
this._scene = undefined
this._layer = undefined
this._sceneData = undefined
this._mapData = undefined
this._state = undefined
this._util = undefined
}
/**
* 初始化
*/
D3.prototype.init = function (opt = {}) {
if (configs.mapDom && configs.mapUrl) {
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYTQ2ZjdjNS1jM2E0LTQ1M2EtOWM0My1mODMzNzY3YjYzY2YiLCJpZCI6MjkzMjcsInNjb3BlcyI6WyJhc3IiLCJnYyJdLCJpYXQiOjE1OTE5NDIzNjB9.RzKlVTVDTQ9r7cqCo-PDydgUh8Frgw0Erul_BVxiS9c';
this._viewer = new Cesium.Viewer(configs.mapDom, configs.mapOptions);
this._util = new Cesium.Utils(this._viewer)
this._viewer.imageryLayers.addImageryProvider(new Cesium.MapboxImageryProvider({
mapId: 'mapbox.dark'
}))
this._scene = this._viewer.scene
this._scene.skyBox = this._util.setTwoGroundSkyBox()
this._util.setSnowEffect()
this.config(opt) //默认开始配置
this.loadScene() //加载场景
// this.addThreeObject() //加载three obj
} else {
alert("请配置地图参数")
}
}
/**
* 场景配置
*
* @param opt
*/
D3.prototype.config = function (opt) {
if (this._scene) {
//设置环境光
this._scene.lightSource.ambientLightColor = opt.ambientLightColor || new Cesium.Color(0.08, 0.08, 0.08, 1);
//深度检测
// this._scene.globe.depthTestAgainstTerrain = false;
//地面调节
//this._scene.globe.baseColor = Cesium.Color.BLACK;
//this._scene.globe.globeAlpha = 0.1;
this._scene.undergroundMode = true;
this._scene.terrainProvider.isCreateSkirt = false;
//调节场景环境
this._scene.sun.show = false;
this._scene.moon.show = false;
// this._scene.skyBox.show = false;
this._scene.skyAtmosphere.show = false;
this._scene.fxaa = true;
//开启颜色校正
this._scene.colorCorrection.show = opt.colorCorrection || false;
this._scene.colorCorrection.saturation = opt.saturation || 3.1;
this._scene.colorCorrection.brightness = opt.brightness || 1.8;
this._scene.colorCorrection.contrast = opt.contrast || 1.2;
this._scene.colorCorrection.hue = opt.hue || 0;
//开启泛光和HDR
this._scene.bloomEffect.show = opt.bloomEffect || false;
this._scene.hdrEnabled = opt.hdrEnabled || true;
this._scene.bloomEffect.threshold = 1;
this._scene.bloomEffect.bloomIntensity = 2;
//最大距离
this._scene.screenSpaceCameraController.maximumZoomDistance = 5000.0
}
}
/**
* 加载场景
*
* 示例白膜数据
*/
D3.prototype.loadScene = function () {
if (this._scene) {
/**
* 建筑
*/
var promise = this._scene.open(configs.sceneUrl)
Cesium.when.all(promise, (layer) => {
this._util.setView({
position: Cesium.Cartesian3.fromDegrees(106.6269866033348, 29.53232673901685, 2000),
orientation: {
heading: 350.37060,
pitch: -12.75012,
roll: 0.00306
}
})
layer[0].style3D.emissionColor = new Cesium.Color(2, 5, 10, 1); //自发光颜色
this._util.setHypsometric(layer[0])
this._util.bindFlyCircle(true) //给鼠标绑定旋转操作
})
/**
* 扫描物
*/
new Promise((resolve, reject) => {
this._util.setRadarScanEffect({
position: Cesium.Cartesian3.fromDegrees(106.54439406642704, 29.53412750079538, 10.0),
color: Cesium.Color.DARKCYAN,
radius: 500
})
this.addWall()
})
/**
* 路网
*/
new Promise((resolve, reject) => {
this.addRoadLine("examples/data/json/lineback_1.json")
this.addRoadLine("examples/data/json/lineback2_1.json")
this.addRoadLine("examples/data/json/lineback3_1.json")
})
/**
* 路径漫游
*/
new Promise((resolve, reject) => {
var paths = [
{ lon: 106.57003293712452, lat: 29.524797836353418, alt: 0, height: 10000, time: 0 },
{ lon: 106.56383672216968, lat: 29.53146964052541, alt: 0, height: 10000, time: 120 },
{ lon: 106.56144813002342, lat: 29.531134070376954, alt: 0, height: 10000, time: 240 },
{ lon: 106.55416088966606, lat: 29.530970546674276, alt: 0, height: 10000, time: 360 },
{ lon: 106.55414087849685, lat: 29.53383654312555, alt: 0, height: 10000, time: 480 },
{ lon: 106.55414087849685, lat: 29.53383654312555, alt: 0, height: 10000, time: 600 }
]
this._util.setPathRoaming({
paths: paths,
model: true,
m_url: 'examples/data/model/qiche.gltf',
m_scale: 1,
m_minimumPixelSize: 1,
label: true,
l_text: '任务车辆.1',
l_pixelOffset: new Cesium.Cartesian2(42, -48),
l_fillColor: Cesium.Color.WHITE,
l_outlineWidth: 3,
billboard: true,
b_img: 'examples/images/Textures/bp.png',
b_width: 55,
b_height: 80,
b_scale: 2,
b_pixelOffset: new Cesium.Cartesian2(20, 0)
})
var paths2 = [
{ lon: 106.5565907627419, lat: 29.53456446159264, alt: 0, height: 10000, time: 0 },
{ lon: 106.55814221039576, lat: 29.53472126114135, alt: 0, height: 10000, time: 120 },
{ lon: 106.55967343745067, lat: 29.535457923243882, alt: 0, height: 10000, time: 240 },
{ lon: 106.5605585760546, lat: 29.535371534594482, alt: 0, height: 10000, time: 360 },
{ lon: 106.56333275485729, lat: 29.532352521691557, alt: 0, height: 10000, time: 480 },
{ lon: 106.56401603756584, lat: 29.53145981355466, alt: 0, height: 10000, time: 600 },
{ lon: 106.56560417620496, lat: 29.531485540486234, alt: 0, height: 10000, time: 720 },
{ lon: 106.56982272180862, lat: 29.532047070094315, alt: 0, height: 10000, time: 840 }
]
this._util.setPathRoaming({
paths: paths2,
model: true,
m_url: 'examples/data/model/qiche.gltf',
m_scale: 1,
m_minimumPixelSize: 1,
label: true,
l_text: '任务车辆.2',
l_pixelOffset: new Cesium.Cartesian2(42, -48),
l_fillColor: Cesium.Color.WHITE,
l_outlineWidth: 3,
billboard: true,
b_img: 'examples/images/Textures/bp.png',
b_width: 55,
b_height: 80,
b_scale: 2,
b_pixelOffset: new Cesium.Cartesian2(20, 0)
})
var paths3 = [
{ lon: 106.55995243647547, lat: 29.543838865278495, alt: 0, height: 10000, time: 0 },
{ lon: 106.56012297535275, lat: 29.54135878173985, alt: 0, height: 10000, time: 120 },
{ lon: 106.56010025753658, lat: 29.538155717188193, alt: 0, height: 10000, time: 240 },
{ lon: 106.5602143992771, lat: 29.535935972391595, alt: 0, height: 10000, time: 360 },
{ lon: 106.56566297913831, lat: 29.529388590619995, alt: 0, height: 10000, time: 480 },
{ lon: 106.56566297913831, lat: 29.529388590619995, alt: 0, height: 10000, time: 600 }
]
this._util.setPathRoaming({
paths: paths3,
model: true,
m_url: 'examples/data/model/qiche.gltf',
m_scale: 1,
m_minimumPixelSize: 1,
label: true,
l_text: '任务车辆.3',
l_pixelOffset: new Cesium.Cartesian2(42, -48),
l_fillColor: Cesium.Color.WHITE,
l_outlineWidth: 3,
billboard: true,
b_img: 'examples/images/Textures/bp.png',
b_width: 55,
b_height: 80,
b_scale: 2,
b_pixelOffset: new Cesium.Cartesian2(20, 0)
})
var paths4 = [
{ lon: 106.55254218312906, lat: 29.525324292576798, alt: 0, height: 10000, time: 0 },
{ lon: 106.55094702943869, lat: 29.528138996089695, alt: 0, height: 10000, time: 120 },
{ lon: 106.55416687394586, lat: 29.531015366619958, alt: 0, height: 10000, time: 240 },
{ lon: 106.55796107689329, lat: 29.531015366619958, alt: 0, height: 10000, time: 360 },
{ lon: 106.55796107689329, lat: 29.53111995652228, alt: 0, height: 10000, time: 480 },
{ lon: 106.55826360770091, lat: 29.526149944173504, alt: 0, height: 10000, time: 600 },
{ lon: 106.55834657023352, lat: 29.525744009935668, alt: 0, height: 10000, time: 720 },
]
this._util.setPathRoaming({
paths: paths4,
model: true,
m_url: 'examples/data/model/CesiumMilkTruck.glb',
m_scale:10,
label: true,
l_text: '社会车辆.1',
l_pixelOffset: new Cesium.Cartesian2(42, -70),
l_fillColor: Cesium.Color.WHITE,
l_outlineWidth: 3,
billboard: true,
b_img: 'examples/images/Textures/bp2.png',
b_width: 55,
b_height: 80,
b_scale: 2,
b_pixelOffset: new Cesium.Cartesian2(20, -20)
})
var paths5 = [
{ lon: 106.54785660441873, lat: 29.541068287177758, alt: 0, height: 10000, time: 0 },
{ lon: 106.55096736681742, lat: 29.541274671684562, alt: 0, height: 10000, time: 120 },
{ lon: 106.55417026108965, lat: 29.542723927762594, alt: 0, height: 10000, time: 240 },
{ lon: 106.55768185185038, lat: 29.543343891151327, alt: 0, height: 10000, time: 360 },
{ lon: 106.56177018350208, lat: 29.543572027310912, alt: 0, height: 10000, time: 480 },
{ lon: 106.564952958958, lat: 29.543196019188958, alt: 0, height: 10000, time: 600 },
{ lon: 106.56496364017232, lat: 29.543182043715298, alt: 0, height: 10000, time: 720 },
]
this._util.setPathRoaming({
paths: paths5,
model: true,
m_url: 'examples/data/model/CesiumMilkTruck.glb',
m_scale:10,
label: true,
l_text: '社会车辆.2',
l_pixelOffset: new Cesium.Cartesian2(42, -70),
l_fillColor: Cesium.Color.WHITE,
l_outlineWidth: 3,
billboard: true,
b_img: 'examples/images/Textures/bp2.png',
b_width: 55,
b_height: 80,
b_scale: 2,
b_pixelOffset: new Cesium.Cartesian2(20, -20)
})
var paths5 = [
{ lon: 106.53723590282631, lat: 29.549647357633564, alt: 300, height: 10000, time: 0 },
{ lon: 106.54729432614089, lat: 29.525784806338617, alt: 300, height: 10000, time: 120 },
{ lon: 106.5710138566176, lat: 29.516772520652342, alt: 300, height: 10000, time: 240 },
{ lon: 106.5788276019971, lat: 29.53780626182699, alt: 300, height: 10000, time: 360 },
{ lon: 106.54982114025249, lat: 29.543572027310912, alt: 300, height: 10000, time: 480 }
]
var flyEntity = this._util.setPathRoaming({
paths: paths5,
model: true,
m_url: 'examples/data/model/CesiumDrone.gltf',
label: true,
l_text: '无人机侦察',
l_outlineWidth: 3,
l_fillColor: Cesium.Color.CYAN
})
// this._viewer.entities.add(this._util.createDynamicCylinder({
// positions: flyEntity.position.getValue(this._viewer.clock.currentTime),
// entity: flyEntity,
// cylinder: {
// length: 50,
// slices: 6,
// bottomRadius: 200,
// material: new Cesium.WarnLinkMaterialProperty({ freely: 'vertical', color: Cesium.Color.ORANGE, duration: 1, count: 0.0, direction: '-' }),
// }
// }))
var pointLight = this._util.setPointLight(
flyEntity.position.getValue(this._viewer.clock.currentTime),
{
color: new Cesium.Color(9, 160, 15, 0.8),
cutoffDistance: 500,
decay: 2,
intensity: 5
})
this._viewer.clock.onTick.addEventListener((clock) => {
var position = flyEntity.position.getValue(this._viewer.clock.currentTime)
pointLight.position = position
});
})
/**
* 高度光源线
*/
new Promise((resolve, reject) => {
this.addHeightLineLight({
positions: {
startPoint: Cesium.Cartesian3.fromDegrees(106.56558869414897, 29.546645918115, 0.0),
endPoint: Cesium.Cartesian3.fromDegrees(106.56558869414897, 29.546645918115, 20000.0)
},
color: Cesium.Color.DARKGOLDENROD,
width: 6
})
this.addHeightLineLight({
positions: {
startPoint: Cesium.Cartesian3.fromDegrees(106.56698580585798, 29.530538206648064, 0.0),
endPoint: Cesium.Cartesian3.fromDegrees(106.56698580585798, 29.530538206648064, 20000.0)
},
color: Cesium.Color.CYAN,
width: 6
})
this.addHeightLineLight({
positions: {
startPoint: Cesium.Cartesian3.fromDegrees(106.5399480984319, 29.53383231300993, 0.0),
endPoint: Cesium.Cartesian3.fromDegrees(106.5399480984319, 29.53383231300993, 20000.0)
},
color: Cesium.Color.CYAN,
width: 6
})
//
this._viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(106.5399480984319, 29.53383231300993, 0.0),
ellipsoid: {
radii: new Cesium.Cartesian3(200.0, 200.0, 200.0),
material: new Cesium.WallLinkMaterialProperty({ freely: 'vertical', color: Cesium.Color.RED.withAlpha(0.5), duration: 1000, count: 0, direction: '-' }),
},
});
this.addHeightLineLight({
positions: {
startPoint: Cesium.Cartesian3.fromDegrees(106.553868801763, 29.527073727667158, 0.0),
endPoint: Cesium.Cartesian3.fromDegrees(106.553868801763, 29.527073727667158, 20000.0)
},
color: Cesium.Color.DARKGOLDENROD,
width: 6
})
this.addHeightLineLight({
positions: {
startPoint: Cesium.Cartesian3.fromDegrees(106.54583250446436, 29.542360318905853, 0.0),
endPoint: Cesium.Cartesian3.fromDegrees(106.54583250446436, 29.542360318905853, 0.0)
},
color: Cesium.Color.CYAN,
width: 6
})
//
this._viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(106.54583250446436, 29.542360318905853, 0.0),
ellipsoid: {
radii: new Cesium.Cartesian3(200.0, 200.0, 200.0),
material: new Cesium.WallLinkMaterialProperty({ freely: 'vertical', color: Cesium.Color.DARKGREEN.withAlpha(0.1), duration: 1000, count: 0, direction: '-' }),
},
});
})
/**
* 弧线
*/
new Promise((resolve, reject) => {
var startPoints = Cesium.Cartesian3.fromDegrees(106.56298388731544, 29.532057959712986, 230.0)
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.55775961346458, 29.542807433251742, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.55775961346458, lat: 29.542807433251742, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.55510300690722, 29.527818241746893, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.55510300690722, lat: 29.527818241746893, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.55826955975746, 29.533090799351488, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.55826955975746, lat: 29.533090799351488, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.5518898036773, 29.53425871475176, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.5518898036773, lat: 29.53425871475176, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.55831081954038, 29.538058310725905, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.55831081954038, lat: 29.538058310725905, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.55200667660088, 29.529567664624146, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.55200667660088, lat: 29.529567664624146, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.56818853301075, 29.525016061106154, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.56818853301075, lat: 29.525016061106154, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.57296659709463, 29.5293255402316, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.57296659709463, lat: 29.5293255402316, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.56948261814809, 29.53323873346, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.56948261814809, lat: 29.53323873346, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.55511738770666, 29.520780769175847, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.55511738770666, lat: 29.520780769175847, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.56938764079821, 29.53789177413806, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.56938764079821, lat: 29.53789177413806, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.56869940844197, 29.54266106727103, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.56869940844197, lat: 29.54266106727103, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
this.addRadianLineLight(
{ startPoint: startPoints, endPoint: Cesium.Cartesian3.fromDegrees(106.57656077263997, 29.538952807799447, 0.0) },
)
this.addDynamicCricle({
circle: { lng: 106.57656077263997, lat: 29.538952807799447, alt: 0.0 },
color: Cesium.Color.CYAN,
height: 0,
radius: 20,
count: 1
})
})
/**
* 楼宇信息
*/
new Promise((resolve, reject) => {
this._util.setPointLight(
Cesium.Cartesian3.fromDegrees(106.56298388731544, 29.532057959712986, 50.0),
{
color: Cesium.Color.CYAN,
cutoffDistance: 250,
decay: 1,
intensity: 2
})
this.addCircleLine({
semiMinorAxis: 150,
semiMajorAxis: 150,
rotation: 0,
center: Cesium.Cartesian3.fromDegrees(106.56298388731544, 29.532057959712986, 40.0),
granularity: Math.PI / 45.0//间隔
})
//动态实体 楼宇中心
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.56298388731544, 29.532057959712986, 230.0),
model: { lng: 106.56298388731544, lat: 29.532057959712986, alt: 230.0 },
circle: { lng: 106.56298388731544, lat: 29.532057959712986, alt: 350.0 },
m_color: Cesium.Color.GREEN,
label: true,
billboard: true,
text: ' xx大厦 ',
l_fillColor: Cesium.Color.GREEN,
l_pixelOffset: new Cesium.Cartesian2(0, -5),
})
this.addDynamicCricle({
circle: { lng: 106.56298388731544, lat: 29.532057959712986, alt: 230.0 },
color: Cesium.Color.GREEN,
height: 205,
radius: 30
})
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.5659092537878, 29.530924830570186, 120.0),
model: { lng: 106.5659092537878, lat: 29.530924830570186, alt: 120.0 },
circle: { lng: 106.5659092537878, lat: 29.530924830570186, alt: 120.0 },
m_color: Cesium.Color.GREEN,
label: true,
text: ' 写字楼 ',
l_fillColor: Cesium.Color.GREEN,
l_pixelOffset: new Cesium.Cartesian2(0, -20),
billboard: false
})
this.addDynamicCricle({
circle: { lng: 106.5659092537878, lat: 29.530924830570186, alt: 120.0 },
color: Cesium.Color.GREEN,
height: 95,
radius: 20
})
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.56240261998792, 29.527304750255123, 120.0),
model: { lng: 106.56240261998792, lat: 29.527304750255123, alt: 120.0 },
circle: { lng: 106.56240261998792, lat: 29.527304750255123, alt: 120.0 },
m_color: Cesium.Color.GREEN,
label: true,
l_fillColor: Cesium.Color.GREEN,
l_pixelOffset: new Cesium.Cartesian2(0, -20),
billboard: false,
text: ' 服务中心 '
})
this.addDynamicCricle({
circle: { lng: 106.56240261998792, lat: 29.527304750255123, alt: 120.0 },
color: Cesium.Color.GREEN,
height: 95,
radius: 20
})
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.56339406642704, 29.53412750079538, 180.0),
model: { lng: 106.56339406642704, lat: 29.53412750079538, alt: 180.0 },
circle: { lng: 106.56339406642704, lat: 29.53412750079538, alt: 180.0 },
m_color: Cesium.Color.GREEN,
label: true,
l_fillColor: Cesium.Color.GREEN,
l_pixelOffset: new Cesium.Cartesian2(0, -20),
billboard: false,
text: ' 商场 '
})
this.addDynamicCricle({
circle: { lng: 106.56339406642704, lat: 29.53412750079538, alt: 180.0 },
color: Cesium.Color.GREEN,
height: 155,
radius: 20
})
//
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.54439406642704, 29.53412750079538, 200.0),
model: { lng: 106.54439406642704, lat: 29.54439406642704, alt: 200.0 },
m_scale: 35,
minimumPixelSize: 80,
m_color: Cesium.Color.CYAN,
label: true,
l_pixelOffset: new Cesium.Cartesian2(0, -20),
l_fillColor: Cesium.Color.CYAN,
billboard: false,
text: ' 雷达探测 '
})
//
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.55439406642704, 29.53412750079538, 80.0),
model: { lng: 106.55439406642704, lat: 29.53412750079538, alt: 80.0 },
m_scale: 35,
minimumPixelSize: 80,
m_color: Cesium.Color.CYAN,
label: true,
l_pixelOffset: new Cesium.Cartesian2(0, -20),
billboard: false,
text: '车牌: 京A53137 '
})
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.54439406642704, 29.54412750079538, 80.0),
model: { lng: 106.54439406642704, lat: 29.54412750079538, alt: 80.0 },
m_scale: 35,
minimumPixelSize: 80,
m_color: Cesium.Color.CYAN,
label: true,
l_pixelOffset: new Cesium.Cartesian2(0, -20),
billboard: false,
text: '车牌: 京A52157 '
})
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.53582326246042, 29.53843116134104, 80.0),
model: { lng: 106.53582326246042, lat: 29.53843116134104, alt: 80.0 },
m_scale: 35,
minimumPixelSize: 80,
m_color: Cesium.Color.CYAN,
label: true,
l_pixelOffset: new Cesium.Cartesian2(0, -20),
billboard: false,
text: '车牌: 京B52688 '
})
this.addDynamicEntity({
position: Cesium.Cartesian3.fromDegrees(106.57205354541892, 29.560026997082456, 300.0),
model: { lng: 106.57205354541892, lat: 29.560026997082456, alt: 300.0 },
m_scale: 35,
minimumPixelSize: 80,
m_color: Cesium.Color.GREEN,
label: true,
l_pixelOffset: new Cesium.Cartesian2(0, -20),
billboard: false,
text: ' 隔离区 '
})
this.addPoi(Cesium.Cartesian3.fromDegrees(106.55682326246042, 29.534247808485972, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.55882326246042, 29.534247808485972, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.55982326246042, 29.534247808485972, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.56082326246042, 29.534247808485972, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.56582326246042, 29.534247808485972, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.55982326246042, 29.52843116134104, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.56082326246042, 29.52843116134104, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.56582326246042, 29.52843116134104, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.54982326246042, 29.52843116134104, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.53082326246042, 29.52843116134104, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.55582326246042, 29.54843116134104, 1.0))
this.addPoi(Cesium.Cartesian3.fromDegrees(106.54539406642704, 29.54412750079538, 1.0))
})
// this._viewer.scene.camera.moveEnd.addEventListener((move) => {
// console.log(this._util.getCameraPosition())
// });
// var _handler = new Cesium.ScreenSpaceEventHandler(this._viewer.scene.canvas)
// _handler.setInputAction((movement) => {
// var cartesian = this._util.getCatesian3FromPX(movement.position)
// console.log(this._util.transformCartesianToWGS84(cartesian))
// }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
// this._util.setDark()
// this._util.getHandelPosition((position,handel)=>{
// console.log(position)
// })
// this._util.setScanCircleEffect({
// position: new Cesium.Cartesian3.fromDegrees(106.50642721790797, 29.658575326606123, 5.0)
// })
// this._util.drawLine((value) => {
// console.log(value)
// })
}
}
D3.prototype.addRoadLine = function (url, polyline) {
var DEF_STYLE = {
width: 2
}
polyline = polyline || DEF_STYLE
if (url) {
this._util.addLineLayer({
url: url,
polyline: polyline
})
}
}
D3.prototype.addDynamicCricle = function (opt) {
var cricleEntity = this._util.createDynamicCricle({
center: opt.circle,
imge: opt.imge,
material: new Cesium.CircleWaveMaterialProperty({
color: opt.color || Cesium.Color.DARKCYAN.withAlpha(0.8),
count: opt.count || 3,
gradient: opt.gradient || 0.9
}),
radius: opt.radius || 100,
height: opt.height || 0.1,
rotateAmount: 0.01
})
this._viewer.entities.add(cricleEntity)
}
D3.prototype.addDynamicEntity = function (opt) {
var Entity = this._util.createEntity()
if (opt.model) {
Entity.model = this._util.getModel({
m_url: opt.m_url || 'examples/data/model/zhui.glb',
m_scale: opt.m_scale || 40,
m_minimumPixelSize: opt.m_minimumPixelSize || 50,
m_color: opt.m_color || Cesium.Color.DARKCYAN.withAlpha(0.5)
})
this._util.setRotateModel({
entity: Entity,
position: opt.model,
rotateAmount: 4
})
}
if (opt.billboard) {
Entity.billboard = this._util.getBillboard({
b_img: 'examples/images/Textures/warn.png',
b_width: 55,
b_height: 55,
b_pixelOffset: opt.b_pixelOffset || new Cesium.Cartesian2(0, -60)
})
}
if (opt.label) {
Entity.label = this._util.getLabel({
l_text: opt.text,
l_font: '16px sans-serif',
l_pixelOffset: opt.l_pixelOffset || new Cesium.Cartesian2(0, -100),
l_fillColor: opt.l_fillColor || Cesium.Color.CYAN
})
}
Entity.position = opt.position
this._viewer.entities.add(Entity)
}
D3.prototype.addPoi = function (position) {
this._viewer.entities.add(this._util.createPoint({
position: position,
lable: false,
point: false,
billboard: {
b_img: 'examples/images/Textures/poi2.png',
b_width: 42,
b_height: 140,
b_scale: 1.5
}
}))
}
D3.prototype.addRadianLineLight = function (positions, angularityFactor = 50000, numOfSingleLine = 500, cutoffDistance = 100) {
if (positions) {
this._util.addMaterialLine({
positions: this._util.getLinkedPointList(positions.startPoint, positions.endPoint, angularityFactor, numOfSingleLine),
width: 8,
material: new Cesium.PolylineCityLinkMaterialProperty({
color: Cesium.Color.CYAN,
duration: 20000
})
})
this._util.setPointLight(
positions.endPoint,
{
color: new Cesium.Color(1, 1, 2, 0.8),
cutoffDistance: cutoffDistance,
decay: 0.5,
intensity: 1
})
}
}
D3.prototype.addHeightLineLight = function (opt) {
if (opt) {
this._util.addMaterialLine({
positions: [opt.positions.startPoint, opt.positions.endPoint],
width: opt.width || 50,
material: new Cesium.PolylineCityLinkMaterialProperty({
color: opt.color || new Cesium.Color(2, 2, 5, 0.8),
duration: opt.duration || 30000
})
})
if (opt.pointLight) {
this._util.setPointLight(
positions.startPoint,
{
color: new Cesium.Color(1, 1, 2, 0.8),
cutoffDistance: opt.cutoffDistance || 800,
decay: 0.5,
intensity: 1
})
}
}
}
D3.prototype.addCircleLine = function (opt) {
var ellipse = this._util.computeEllipseEdgePositions(opt)
var positions = []
for (let i = 0; i < ellipse.outerPositions.length; i += 3) {
let cartesian = new Cesium.Cartesian3(ellipse.outerPositions[i], ellipse.outerPositions[i + 1], ellipse.outerPositions[i + 2]);
positions.push(cartesian)
}
positions.push(positions[0])
var circleLine = this._viewer.entities.add(this._util.createLine({
positions: positions,
width: 8,
material: new Cesium.PolylineOutlineMaterialProperty({
color: Cesium.Color.CYAN,
}),
}))
this._util.setDynamicHeight({
entity: circleLine.polyline,
cartesians: circleLine.polyline.positions._value,
minHeiht: 40,
maxHeiht: 220,
speed: 0.01
})
}
D3.prototype.addWall = function () {
var warn = [
106.56100246619017, 29.55196242209373, 200.0,
106.56340609277548, 29.566165610819642, 200.0,
106.58569020875434, 29.565728490316253, 200.0,
106.58005269968774, 29.554240715275743, 200.0,
106.56120354632381, 29.55085916174001, 200.0,
106.56100246619017, 29.55196242209373, 200.0,
]
// this._viewer.entities.add({
// wall: {
// positions: Cesium.Cartesian3.fromDegreesArrayHeights(warn),
// material: new Cesium.WarnLinkMaterialProperty({ freely: 'cross', color: Cesium.Color.ORANGE, duration: 1000, count: 1.0, direction: '-' }),
// }
// });
// var wall = [
// 106.48371807021667, 29.58911680397793, 300,
// 106.51856472700705, 29.521864720316948, 300,
// 106.58365973316853, 29.509643881335794, 300,
// 106.59786596223937, 29.55949597535444, 300,
// 106.59947239295121, 29.571088868292403, 300,
// 106.53450991438845, 29.604637451928784, 300,
// 106.50579172352724, 29.650956459667555, 300,
// 106.48371807021667, 29.58911680397793, 300
// ]
this._viewer.entities.add({
wall: {
positions: Cesium.Cartesian3.fromDegreesArrayHeights(warn),
material: new Cesium.WallLinkMaterialProperty({ freely: 'vertical', color: Cesium.Color.DARKGREEN.withAlpha(0.1), duration: 1000, count: 0, direction: '-' }),
}
});
}
D3.prototype.addThreeObject = function () {
// Lathe geometry
var doubleSideMaterial = new THREE.MeshNormalMaterial({
side: THREE.DoubleSide
});
var segments = 10;
var points = [];
for (var i = 0; i < segments; i++) {
points.push(new THREE.Vector2(Math.sin(i * 0.2) * segments + 5, (i - 5) * 2));
}
var geometry = new THREE.LatheGeometry(points);
var latheMesh = new THREE.Mesh(geometry, doubleSideMaterial);
latheMesh.scale.set(100, 100, 100); //scale object to be visible at planet scale
latheMesh.position.z += 1500.0; // translate "up" in Three.js space so the "bottom" of the mesh is the handle
latheMesh.rotation.x = Math.PI / 2; // rotate mesh for Cesium's Y-up system
var latheMeshYup = new THREE.Group();
latheMeshYup.add(latheMesh)
this._util._three.scene.add(latheMeshYup); // don’t forget to add it to the Three.js scene manually
var threeObject = []
var maxWGS84 = [106.57003293712452, 29.524797836353418]
var minWGS84 = [106.55003293712452, 29.504797836353418]
var _3DOB = this._util.createThreeObject()
_3DOB.maxWGS84 = maxWGS84
_3DOB.minWGS84 = minWGS84
_3DOB.threeMesh = latheMeshYup
threeObject.push(_3DOB)
this._util.addThreeObjects(threeObject)
}
/**
* 初始化页面
* 添加gu
*/
D3.prototype.initGUI = function () {
var viewer = this._viewer,
gui = new dat.GUI();
var sceneObj = new function () {
//泛光开关
this.bloomEffectShow = false
//泛光阈值
this.bloomThreshold = 1
//泛光强度
this.bloomIntensity = 2
//HDR开关
this.hdrEnabled = true
//颜色校正
this.colorCorrectionShow = false
//饱和度
this.colorCorrectionSaturation = 3.1
//亮度
this.colorCorrectionBrightness = 1.8
//对比度
this.colorCorrectionContrast = 1.2
//色调
this.colorCorrectionHue = 0
//环境光
this.ambientLightColor = 0.1
};
var sceneEffect = gui.addFolder('场景效果')
sceneEffect.add(sceneObj, 'bloomEffectShow').name('泛光开关').onChange(function (value) {
viewer.scene.bloomEffect.show = value;
viewer.scene.bloomEffect.threshold = sceneObj.bloomThreshold;
viewer.scene.bloomEffect.bloomIntensity = sceneObj.bloomIntensity;
});
sceneEffect.add(sceneObj, 'bloomThreshold', 0, 1, 0.1).name('泛光阈值').onChange(function (value) {
viewer.scene.bloomEffect.threshold = value;
});
sceneEffect.add(sceneObj, 'bloomIntensity', 0, 10, 0.1).name('泛光强度').onChange(function (value) {
viewer.scene.bloomEffect.bloomIntensity = value;
});
sceneEffect.add(sceneObj, 'hdrEnabled').name('HDR开关').onChange(function (value) {
viewer.scene.hdrEnabled = value;
});
sceneEffect.add(sceneObj, 'colorCorrectionShow').name('颜色校正').onChange(function (value) {
viewer.scene.colorCorrection.show = value;
});
sceneEffect.add(sceneObj, 'colorCorrectionSaturation', 0, 5, 0.1).name('饱和度').onChange(function (value) {
viewer.scene.colorCorrection.saturation = value;
});
sceneEffect.add(sceneObj, 'colorCorrectionBrightness', 0, 5, 0.1).name('亮度').onChange(function (value) {
viewer.scene.colorCorrection.brightness = value;
});
sceneEffect.add(sceneObj, 'colorCorrectionContrast', 0, 5, 0.1).name('对比度').onChange(function (value) {
viewer.scene.colorCorrection.contrast = value;
});
sceneEffect.add(sceneObj, 'colorCorrectionHue', 0, 5, 0.1).name('色调').onChange(function (value) {
viewer.scene.hdrEnabled = value;
});
sceneEffect.add(sceneObj, 'colorCorrectionHue', 0, 1, 0.1).name('环境光').onChange(function (value) {
viewer.scene.lightSource.ambientLightColor = new Cesium.Color(value, value, value, 1);
});
sceneEffect.open()
}
if (typeof Cesium !== 'undefined') {
onloadApp()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。