var viewer;//全局cesium对象
|
var mancarHeight;//车辆和人员定位的临时高度,有三维模型的,用clamptoheight替代
|
var base3dtilesPrimitives = [];//3dtiles实景三维数据底图数据
|
var tilesUrl;//多质量等级三维地图数据集
|
var modelMatrixData;//多质量等级三维地图数据集的位置移动矩阵
|
var initView;//初始位置数据集
|
var googleimageryProvider;
|
var tdtannoimageryProvider;
|
var googleimagery;
|
var tdtannoimagery;
|
var tdtimagery;
|
var tdtvectorimagery;
|
var tdtvectoranoimagery;
|
var arcgisProvider;
|
var localimagery;
|
var cur_height;//当前高度
|
var cur_west;
|
var cur_east;
|
var cur_south;
|
var cur_north;
|
const minHeight=1000;
|
|
var ug;//地下模式
|
var is_ug_open=0;
|
|
var baseShPrimitives=[];
|
|
function initmap3D(mapOptions){
|
|
var tdtimganourl = "http://t0.tianditu.gov.cn/cia_w/wmts?service=wmts&request=GetTile"
|
+"&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}"
|
+"&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg"
|
+"&tk=3fd07756862125febfd7b53271a90dbd";
|
//天地图影像注记
|
tdtannoimageryProvider = new Cesium.WebMapTileServiceImageryProvider({
|
url: tdtimganourl,
|
layer: "tdtimganoLayer",
|
// layer: "tdtAnnoLayer" ,//注记
|
style: "default",
|
format: "image/jpeg",
|
tileMatrixSetID: "GoogleMapsCompatible",
|
show: false
|
});
|
var tdtvecurl = "http://t0.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile"
|
+"&version=1.0.0&LAYER=vec&tileMatrixSet=w&TileMatrix={TileMatrix}"
|
+"&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg"
|
+"&tk=3fd07756862125febfd7b53271a90dbd";
|
//天地图二维底图
|
var tdtvectorProvider = new Cesium.WebMapTileServiceImageryProvider({
|
url: tdtvecurl,
|
layer: "tdtvecLayer",
|
style: "default",
|
format: "image/jpeg",
|
tileMatrixSetID: "GoogleMapsCompatible",
|
show: false,
|
});
|
var tdtvecanourl = "http://t0.tianditu.gov.cn/cva_w/wmts?service=wmts&request=GetTile"
|
+"&version=1.0.0&LAYER=cva&tileMatrixSet=w&TileMatrix={TileMatrix}"
|
+"&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg"
|
+"&tk=3fd07756862125febfd7b53271a90dbd";
|
//天地图二维底图注记
|
var tdtvectoranoProvider = new Cesium.WebMapTileServiceImageryProvider({
|
url: tdtvecanourl,
|
layer: "tdtvecLayer",
|
style: "default",
|
format: "image/jpeg",
|
tileMatrixSetID: "GoogleMapsCompatible",
|
show: false
|
});
|
//谷歌网络影像
|
googleimageryProvider = new Cesium.UrlTemplateImageryProvider({
|
// url:"http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali",
|
url:'http://www.google.cn/maps/vt?lyrs=s@800&x={x}&y={y}&z={z}',
|
tilingScheme:new Cesium.WebMercatorTilingScheme(),
|
minimumLevel:1,
|
maximumLevel:20
|
|
});
|
//天地图影像服务,质量太差,如无特殊要求就不用
|
var tdtimgurl = "http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile"
|
+"&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles"
|
+"&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&"
|
+"tk=3fd07756862125febfd7b53271a90dbd"
|
var tdtimageryProvider = new Cesium.WebMapTileServiceImageryProvider({
|
url: tdtimgurl,
|
layer: "tdtimgLayer",
|
style: "default",
|
format: "image/jpeg",
|
tileMatrixSetID: "GoogleMapsCompatible",
|
show: true
|
});
|
arcgisProvider=new Cesium.ArcGisMapServerImageryProvider({
|
url : 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'
|
});
|
|
googleimagery = new Cesium.ImageryLayer(googleimageryProvider, {});
|
tdtimagery = new Cesium.ImageryLayer(tdtimageryProvider, {});
|
tdtannoimagery = new Cesium.ImageryLayer(tdtannoimageryProvider, {});
|
tdtvectorimagery = new Cesium.ImageryLayer(tdtvectorProvider, {});
|
tdtvectoranoimagery = new Cesium.ImageryLayer(tdtvectoranoProvider, {});
|
// localimagery = new Cesium.ImageryLayer(localimageryProvider, {});
|
//cesium全球30米分辨率地形资源token
|
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI0NjBlYzRiYS0wMDRhL'
|
+'TRjZWYtODJhOS1jZTk5ZmI4ZDg5ZTIiLCJpZCI6ODI1MCwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU1MTU3M'
|
+'DU1Mn0.yfJ_i4EPiunFj_qUftuv1ksx4pUNgnPC16vQCBGrM08';
|
//初始化三维场景
|
viewer = new Cesium.Viewer('cesiumContainer',{
|
|
fullscreenButton:false,
|
homeButton:false,
|
timeline:true,
|
geocoder:false,
|
scene3DOnly:true,
|
sceneModePicker:false,
|
baseLayerPicker:false,
|
shouldAnimate:true,
|
navigationHelpButton:false,
|
//imageryProvider:googleimageryProvider,
|
imageryProvider:tdtannoimageryProvider,
|
//imageryProvider:arcgisProvider,
|
terrainProvider:Cesium.createWorldTerrain({requestWaterMask:true}),
|
terrainExaggeration:Number($('#terrainEx').val())
|
});
|
|
viewer.imageryLayers.add(tdtimagery);
|
//viewer.imageryLayers.addImageryProvider(arcgisProvider);
|
viewer.imageryLayers.addImageryProvider(tdtannoimageryProvider);
|
//viewer.imageryLayers.addImageryProvider(googleimageryProvider);
|
|
viewer.scene.globe.depthTestAgainstTerrain = true;
|
viewer.scene._hdr = false;
|
viewer.scene.fxaa = false;
|
viewer.scene.globe.maximumScreenSpaceError = 6/3;
|
viewer.scene.postProcessStages.fxaa.enabled=false;
|
|
// viewer.scene.screenSpaceCameraController.enableCollisionDetection = enable;
|
// viewer.scene.globe.translucency.frontFaceAlpha = alpha;
|
|
//地图灰度系数
|
var layer0 = viewer.scene.imageryLayers.get(0);
|
layer0.gamma = 0.66;
|
// viewer.scene.globe.enableLighting = true//必须开启光照效果
|
|
//加载导航工具
|
var navOptions = {};
|
navOptions.defaultResetView = Cesium.Rectangle.fromDegrees(
|
mapOptions.initView.lon-0.01, mapOptions.initView.lat-0.01,
|
mapOptions.initView.lon+0.01, mapOptions.initView.lat+0.01);
|
navOptions.enableCompass = true;
|
navOptions.enableZoomControls = true;
|
navOptions.enableDistanceLegend = true;
|
navOptions.enableCompassOuterRing = true;
|
viewer.extend(Cesium.viewerCesiumNavigationMixin, navOptions);//加入导航工具扩展
|
viewer.extend(Cesium.xbsjGroundPrimitiveMixin);//加入贴地纹理扩展
|
|
tilesUrl = mapOptions.tilesUrl;
|
modelMatrixData = mapOptions.modelMatrixData;
|
//add3dtilesmap('hquality');
|
|
initView = mapOptions.initView;
|
wholeView();
|
|
if(mapOptions.water!=undefined&&mapOptions.water!=[]){
|
createWater(mapOptions.water);
|
}
|
|
//切换地下模式
|
ug = new underground(viewer,
|
{
|
depth : 5000,
|
alpha : 0.66
|
})
|
// ug.activate();
|
|
// mancarHeight = mapOptions.mancarHeight;
|
|
//初始化项目点
|
//initProject();
|
|
var previousPickedEntity = {
|
feature: undefined,
|
originalColor: undefined
|
};
|
var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
|
handler.setInputAction(function (movement) {
|
var pick = viewer.scene.pick(movement.position);
|
if (pick instanceof Cesium.Cesium3DTileFeature) {
|
var propertyNames = pick.getPropertyNames();
|
var length = propertyNames.length;
|
var content="";
|
for (var i = 0; i < length; ++i) {
|
var propertyName = propertyNames[i];
|
content += propertyName + ': ' + pick.getProperty(propertyName)+'<br>'
|
}
|
layer.msg(content);
|
|
//判断以前是否选择要素
|
if (pick != previousPickedEntity.feature) {
|
if (previousPickedEntity.feature != undefined) {
|
//还原前选择要素的本颜色
|
previousPickedEntity.feature.color = previousPickedEntity.originalColor;
|
//将当前选择要素及其颜色添加到previousPickedEntity
|
previousPickedEntity.feature = pick;
|
previousPickedEntity.originalColor = pick.color;
|
}
|
//将当前选择要素及其颜色添加到previousPickedEntity
|
previousPickedEntity.feature = pick;
|
previousPickedEntity.originalColor = pick.color;
|
}
|
//将模型变为黄色高亮
|
pick.color = Cesium.Color.YELLOW;
|
}
|
else if (Cesium.defined(pick) && Cesium.defined(pick.id.id) && pick.id.id.indexOf("project_")!= -1 ) {
|
var id=pick.id.id;
|
var id2=parseInt(id.substring(8));
|
showProjectTables(id2);
|
}
|
else if(Cesium.defined(pick) && Cesium.defined(pick.id.id) && pick.id.id.indexOf("pm25_")!= -1){
|
var id=pick.id.id;
|
var jData={"id":1};
|
layer.open({
|
type: 2,
|
title: "传感器编号:"+id+"氨气数据展示",
|
maxmin: true,
|
shade: 0,
|
maxmin:false,
|
scrollbar: false,
|
offset: 'rt',
|
shadeClose: false, //点击遮罩关闭层
|
area : ['600px' , '350px'],
|
resize:false,
|
content: 'smelldata/smellChart.html',
|
success: function (layero, index) {
|
var iframe = window['layui-layer-iframe' + index];//拿到iframe元素
|
iframe.child(JSON.stringify(1))//向此iframe层方法 传递参数
|
}
|
});
|
}
|
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
//双击事件
|
var handlerDoubleClick = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
|
handlerDoubleClick.setInputAction(function (movement) {
|
var pick = viewer.scene.pick(movement.position);
|
}, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
|
|
//鼠标小手状态
|
var handlerMouseMove=new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
|
handlerMouseMove.setInputAction(function (movement) {
|
var pick = viewer.scene.pick(movement.endPosition);
|
if (Cesium.defined(pick)) {
|
viewer._container.style.cursor = "pointer";
|
} else{
|
viewer._container.style.cursor = "default";
|
}
|
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
|
}
|
|
|
function openUg(){
|
ug.activate();
|
is_ug_open=1;
|
}
|
function closeUg(){
|
ug.disable();
|
is_ug_open=0;
|
}
|
|
|
//移除地图上的采样数据
|
function removeSample(){
|
var entitys = viewer.entities._entities._array;
|
for (var i = 0; i < entitys.length; i++) {
|
if (entitys[i]._id.indexOf("sampleEvent_")!=-1 ||entitys[i]._id.indexOf("samplePlan_")!=-1) {
|
viewer.entities.remove(entitys[i]);
|
i--;
|
}
|
}
|
}
|
//移除项目点
|
function removeProject(){
|
var entitys = viewer.entities._entities._array;
|
for (var i = 0; i < entitys.length; i++) {
|
if (entitys[i]._id.indexOf("project_")!=-1) {
|
viewer.entities.remove(entitys[i]);
|
i--;
|
}
|
}
|
}
|
//初始化项目点
|
function initProject(){
|
|
for(var i=0;i<p_points.length;i++){
|
var entity = viewer.entities.getById("project_"+p_points[i].id);
|
if(entity == undefined){//如果不存在则添加
|
viewer.entities.add({
|
id:"project_"+p_points[i].id,
|
name:p_points[i].name,
|
position : Cesium.Cartesian3.fromDegrees(p_points[i].longitude,p_points[i].latitude),
|
label : {
|
show : true,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : 'bold 14px Helvetica',
|
fillColor : Cesium.Color.WHITE,
|
text : '',
|
disableDepthTestDistance : Number.POSITIVE_INFINITY,
|
heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND
|
|
},
|
billboard : {
|
image : '../images/pinimg/mark3.png',
|
width:25,
|
height:25,
|
rotation : 0,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
disableDepthTestDistance:Number.POSITIVE_INFINITY,//广告牌不进行深度检测
|
heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND
|
}
|
});
|
}
|
}
|
}
|
//初始化采样
|
function initSampleEvent(){
|
$.ajax({
|
type : "post",
|
async:false,
|
url : path+"/listSampleEventAndPlan?east="+cur_east+"&west="+cur_west+"&south="+cur_south+
|
"&north="+cur_north+"&access_token="+access_token,
|
contentType : "application/json;charset=utf-8",
|
success : function(data) {
|
if(data!=null){
|
addSampleEvent(data);
|
}
|
},
|
error : function(XMLHttpRequest, textStatus, errorThrown) {
|
console.log("ajax请求失败!")
|
}
|
});
|
|
}
|
|
//项目分布点
|
function showProjectTables(id){
|
//link env_project.js
|
showProjectDetails(id);
|
}
|
|
//地图添加采样事件
|
function addSampleEvent(data){
|
var sampleEvents=data.sampleEvents;
|
var samplePlans=data.samplePlans;
|
for(var i=0;i<samplePlans.length;i++){
|
var entity = viewer.entities.getById("samplePlan_"+samplePlans[i].id);
|
if(entity == undefined){//如果不存在则添加
|
|
viewer.entities.add({
|
id:"samplePlan_"+samplePlans[i].id,
|
name: samplePlans[i].sample_name,
|
position : Cesium.Cartesian3.fromDegrees(samplePlans[i].longitude,samplePlans[i].latitude),
|
label : {
|
show : true,
|
verticalOrigin : Cesium.VerticalOrigin.CENTER,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : 'bold 14px Helvetica',
|
//style : Cesium.LabelStyle.FILL_AND_OUTLINE,
|
fillColor : Cesium.Color.WHITE,
|
text : samplePlans[i].sample_no,
|
disableDepthTestDistance : Number.POSITIVE_INFINITY,
|
//pixelOffset : new Cesium.Cartesian2(10,0)
|
},
|
billboard : {
|
image : '../images/pinimg/36pink.png',
|
width:50,
|
height:100,
|
verticalOrigin : Cesium.VerticalOrigin.CENTER,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
disableDepthTestDistance:Number.POSITIVE_INFINITY,//广告牌不进行深度检测
|
// heightReference:Cesium.HeightReference.RELATIVE_TO_GROUND
|
}
|
});
|
}
|
}
|
|
|
for(var i=0;i<sampleEvents.length;i++){
|
var entity = viewer.entities.getById("sampleEvent_"+sampleEvents[i].id);
|
if(entity == undefined){//如果不存在则添加
|
|
viewer.entities.add({
|
id:"sampleEvent_"+sampleEvents[i].id,
|
name:sampleEvents[i].sample_name,
|
position : Cesium.Cartesian3.fromDegrees(sampleEvents[i].longitude,sampleEvents[i].latitude),
|
label : {
|
show : true,
|
verticalOrigin : Cesium.VerticalOrigin.CENTER,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : 'bold 14px Helvetica',
|
//style : Cesium.LabelStyle.FILL_AND_OUTLINE,
|
fillColor : Cesium.Color.WHITE,
|
text : sampleEvents[i].sample_no,
|
disableDepthTestDistance : Number.POSITIVE_INFINITY,
|
//pixelOffset : new Cesium.Cartesian2(10,0)
|
},
|
billboard : {
|
image : '../images/pinimg/36yellow.png',
|
width:50,
|
height:100,
|
verticalOrigin : Cesium.VerticalOrigin.CENTER,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
disableDepthTestDistance:Number.POSITIVE_INFINITY,//广告牌不进行深度检测
|
}
|
});
|
}
|
}
|
}
|
|
//删除一个
|
function remove3dtileByPath(path){
|
if(path==undefined){
|
return ;
|
}
|
if(base3dtilesPrimitives!=[]){
|
for ( var i = 0; i < base3dtilesPrimitives.length; i++) {
|
path2 = serverIP + path;
|
if(base3dtilesPrimitives[i]._url==path2){
|
viewer.scene.primitives.remove(base3dtilesPrimitives[i]);
|
//从数组中移除当前路径
|
base3dtilesPrimitives.splice(i,1);
|
}
|
|
}
|
}
|
}
|
|
//判断是否存在
|
function is3dtileExsit(path){
|
if(base3dtilesPrimitives!=[]){
|
for ( var i = 0; i < base3dtilesPrimitives.length; i++) {
|
path2 = serverIP + path;
|
if(base3dtilesPrimitives[i]._url==path2){
|
return true;
|
}
|
|
}
|
}
|
return false;
|
}
|
|
|
//加载实体类
|
function add3dtilesEntityOnmap(id,tilsePath,tile,iscolorRandom){
|
|
if(is3dtileExsit(tilsePath)){
|
layer.msg("模型已存在,无需重复加载");
|
return ;
|
}
|
var modelMatrix = Cesium.Matrix4.fromArray([
|
1.0, 0.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
0.0, 0.0, 1.0, 0.0,
|
tile.tilesX,tile.tilesY, tile.tilesZ, 1.0
|
]);
|
//配置数据
|
var tilesetOption = {
|
url: serverIP + tilsePath,
|
maximumScreenSpaceError: 1,
|
maximumNumberOfLoadedTiles: 2000,
|
maximumMemoryUsage: 8192,
|
skipLevels: 1,
|
modelMatrix: modelMatrix//引入转移矩阵
|
};
|
var tileset = new Cesium.Cesium3DTileset(tilesetOption);
|
|
//是否颜色随机
|
if(iscolorRandom){
|
tileset.style = new Cesium.Cesium3DTileStyle({
|
color: randomRgbaColor(),
|
show:true
|
});
|
|
}
|
|
//加载3dtiles数据
|
base3dtilesPrimitives.push(viewer.scene.primitives.add(tileset));
|
|
}
|
|
|
//加载3dtiles实景三维数据底图
|
function add3dtilesmap(level){
|
remove3dtilesmap();
|
var currenttilesUrl;
|
$('#highQi').css('color','rgb(222, 222, 222)');
|
$('#mediumQi').css('color','rgb(222, 222, 222)');
|
$('#lowQi').css('color','rgb(222, 222, 222)');
|
switch (level) {
|
case "hquality":
|
currenttilesUrl = tilesUrl.hquality;
|
$('#highQi').css('color','#1AB394');
|
break;
|
case "mquality":
|
currenttilesUrl = tilesUrl.mquality;
|
$('#mediumQi').css('color','#1AB394');
|
break;
|
case "lquality":
|
currenttilesUrl = tilesUrl.lquality;
|
$('#lowQi').css('color','#1AB394');
|
break;
|
default:
|
break;
|
}
|
|
//模型平移的转移矩阵
|
for ( var i = 0; i < currenttilesUrl.length; i++) {
|
var tilsePath=currenttilesUrl[i];
|
|
var modelMatrix = Cesium.Matrix4.fromArray([
|
1.0, 0.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
0.0, 0.0, 1.0, 0.0,
|
modelMatrixData[i][0], modelMatrixData[i][1], modelMatrixData[i][2], 1.0
|
]);
|
//配置数据
|
var tilesetOption = {
|
url: serverIP + currenttilesUrl[i],
|
maximumScreenSpaceError: 1,
|
maximumNumberOfLoadedTiles: 2000,
|
maximumMemoryUsage: 8192,
|
skipLevels: 1,
|
modelMatrix: modelMatrix//引入转移矩阵
|
};
|
var tileset = new Cesium.Cesium3DTileset(tilesetOption);
|
|
if(currenttilesUrl[i]=='3ddata/assets/jzw-shanghai/tileset.json'){
|
tileset.style = new Cesium.Cesium3DTileStyle({
|
color: {
|
conditions: [
|
["${floor} >= 20", "rgba(255, 182, 193, 1.0)"],
|
["${floor} >= 15", "rgb(102, 71, 151)"],
|
["${floor} >= 13", "rgb(170, 162, 204)"],
|
["${floor} >= 12", "rgb(224, 226, 238)"],
|
["${floor} >= 10", "rgb(252, 230, 200)"],
|
["${floor} >= 8", "rgb(248, 176, 87)"],
|
["${floor} >= 6", "rgb(198, 106, 11)"],
|
["true", "rgb(127, 59, 8)"],
|
],
|
|
}
|
});
|
|
}
|
|
//加载3dtiles数据
|
base3dtilesPrimitives.push(viewer.scene.primitives.add(tileset));
|
}
|
}
|
|
function randomRgbaColor() { //随机生成RGBA颜色
|
var r = Math.floor(Math.random() * 256); //随机生成256以内r值
|
var g = Math.floor(Math.random() * 256); //随机生成256以内g值
|
var b = Math.floor(Math.random() * 256); //随机生成256以内b值
|
var alpha = Math.random(); //随机生成1以内a值
|
return "rgba(" + r + "," + g + "," + b +","+ 1 + ")"; //返回rgba(r,g,b,a)格式颜色
|
}
|
|
function addBusTest(){
|
var url="../assets/bus2.gltf";
|
var lng= 116.3930,lat= 39.9128,height= 50.0, scale = 3.0 ;
|
addGltf(url,lng,lat,height,scale);
|
}
|
function addBusTest2(){
|
var url="../assets/bus2.gltf";
|
var lng= 116.3939,lat= 39.9058,height= 100.0, scale = 5.0 ;
|
addGltf(url,lng,lat,height,scale);
|
}
|
function addBusTest3(){
|
var url="../assets/bus2.gltf";
|
var lng= 116.3986,lat= 39.9070,height=100.0, scale = 5.0 ;
|
addGltf(url,lng,lat,height,scale);
|
}
|
|
function addGltf(url,lng,lat,height,scale){
|
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(lng, lat,height));
|
|
var model=viewer.scene.primitives.add(Cesium.Model.fromGltf({
|
url : url, //如果为bgltf则为.bgltf
|
modelMatrix : modelMatrix,
|
scale : scale, //放大倍数
|
}));
|
|
let m = model.modelMatrix;
|
//构建一个三阶旋转矩阵。模型旋转一定的角度,fromRotation[Z]来控制旋转轴,toRadians()为旋转角度,转为弧度再参与运算
|
let m1 = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(-78));
|
//矩阵计算
|
Cesium.Matrix4.multiplyByMatrix3(m,m1,m);
|
//将计算结果再赋值给modelMatrix
|
model.modelMatrix = m;
|
}
|
|
function add3DtileJson(url,lng,lat,height,head,pitch,roll,scaleparam){
|
|
var modelMatrix = Cesium.Matrix4.fromArray([
|
1.0, 0.0, 0.0, 0.0,
|
0.0, 1.0, 0.0, 0.0,
|
0.0, 0.0, 1.0, 0.0,
|
0.0, 0.0, 0.0, 1.0
|
]);
|
|
var tilesetOption = {
|
url: url,
|
maximumScreenSpaceError: 1,
|
maximumNumberOfLoadedTiles: 2000,
|
maximumMemoryUsage: 8192,
|
skipLevels: 1,
|
modelMatrix: modelMatrix//引入转移矩阵
|
};
|
var tileset = new Cesium.Cesium3DTileset(tilesetOption);
|
|
let mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(head));
|
let my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(pitch));
|
let mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(roll));
|
let rotationX = Cesium.Matrix4.fromRotationTranslation(mx);
|
let rotationY = Cesium.Matrix4.fromRotationTranslation(my);
|
let rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);
|
//平移
|
let position = Cesium.Cartesian3.fromDegrees(lng, lat, params.height);
|
let m = Cesium.Transforms.eastNorthUpToFixedFrame(position);
|
|
let scale = Cesium.Matrix4.fromUniformScale(scaleparam);
|
// //缩放
|
Cesium.Matrix4.multiply(m, scale, m);
|
//旋转、平移矩阵相乘
|
Cesium.Matrix4.multiply(m, rotationX, m);
|
Cesium.Matrix4.multiply(m, rotationY, m);
|
Cesium.Matrix4.multiply(m, rotationZ, m);
|
|
tileset.readyPromise.then(function () {
|
|
}).then(function () {
|
if (tileset._root.transform == undefined) {
|
console.log("瓦片未变换");
|
}
|
tileset._root.transform = m;
|
|
});
|
|
|
|
|
base3dtilesPrimitives.push(viewer.scene.primitives.add(tileset));
|
}
|
|
//卸载3dtiles实景三维数据底图
|
function remove3dtilesmap(){
|
if(base3dtilesPrimitives!=[]){
|
for ( var i = 0; i < base3dtilesPrimitives.length; i++) {
|
viewer.scene.primitives.remove(base3dtilesPrimitives[i]);
|
}
|
base3dtilesPrimitives = [];
|
}
|
}
|
//创建水体
|
function createWater(water){
|
for ( var i = 0; i < water.length; i++) {
|
var waterPmt = new Cesium.Primitive({
|
geometryInstances : new Cesium.GeometryInstance({
|
geometry : new Cesium.PolygonGeometry({
|
polygonHierarchy : new Cesium.PolygonHierarchy(
|
Cesium.Cartesian3.fromDegreesArrayHeights(water[i])),
|
perPositionHeight : true,
|
vertexFormat : Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT
|
}),
|
}),
|
appearance : new Cesium.EllipsoidSurfaceAppearance({
|
aboveGround : true,
|
}),
|
show : true
|
});
|
waterPmt.appearance.material = new Cesium.Material({
|
fabric : {
|
type : 'Water',
|
uniforms : {
|
//specularMap: '../images/earthspec1k.jpg',
|
//normalMap: Cesium.buildModuleUrl('../images/waterNormals.jpg'),
|
frequency: 1000.0,
|
animationSpeed: 0.005,
|
amplitude: 1.0
|
}
|
}
|
});
|
viewer.scene.primitives.add(waterPmt);
|
}
|
}
|
//加载街道矢量瓦片数据
|
function addVectorLayer(){
|
viewer.imageryLayers.remove(tdtannoimagery,false);
|
viewer.imageryLayers.remove(googleimagery,false);
|
viewer.imageryLayers.remove(tdtimagery,false);
|
viewer.imageryLayers.add(tdtvectorimagery);
|
viewer.imageryLayers.add(tdtvectoranoimagery);
|
}
|
//加载谷歌遥感影像瓦片数据
|
function addImageLayer(){
|
viewer.imageryLayers.remove(tdtvectorimagery,false);
|
viewer.imageryLayers.remove(tdtvectoranoimagery,false);
|
viewer.imageryLayers.remove(tdtimagery,false);
|
viewer.imageryLayers.add(googleimagery);
|
viewer.imageryLayers.add(tdtannoimagery);
|
}
|
//加载天地图遥感影像瓦片数据
|
function addtdtImageLayer(){
|
viewer.imageryLayers.remove(googleimagery,false);
|
viewer.imageryLayers.remove(tdtvectorimagery,false);
|
viewer.imageryLayers.remove(tdtvectoranoimagery,false);
|
viewer.imageryLayers.add(tdtimagery);
|
viewer.imageryLayers.add(tdtannoimagery);
|
}
|
//切换地形加载
|
function addWorldTerrain(){
|
viewer.scene.terrainProvider = Cesium.createWorldTerrain({requestWaterMask:true});
|
}
|
//本地地形
|
function addchTerrain(){
|
var terrainProvider = new Cesium.CesiumTerrainProvider({
|
url:serverIP + "chineseterrain"
|
});
|
viewer.scene.terrainProvider = terrainProvider;
|
}
|
//椭球
|
function addelTerrain(){
|
viewer.scene.terrainProvider = new Cesium.EllipsoidTerrainProvider({});
|
}
|
|
function loadShnangHaigzw(){
|
|
var promise = Cesium.GeoJsonDataSource.load('../assets/gzw.json',{
|
stroke: Cesium.Color.BROWN ,
|
fill: Cesium.Color.BROWN
|
});
|
promise.then(function(dataSource) {
|
viewer.dataSources.add(dataSource);
|
smiplemodeldata = dataSource;
|
var entities = dataSource.entities.values;
|
// var colorHash = {};
|
for (var i = 0; i < entities.length; i++) {
|
var entity = entities[i];
|
// var name = entity.properties.name;
|
|
entity.polygon.heightReference = Cesium.HeightReference.RELATIVE_TO_GROUND;
|
entity.polygon.outline = false;
|
entity.polygon.extrudedHeight = 500;
|
entity.polygon.extrudedHeightReference = Cesium.HeightReference.RELATIVE_TO_GROUND;
|
|
}
|
}).otherwise(function(error){
|
swal(error,"请重试!","error");
|
});
|
|
}
|
|
|
var smiplemodeldata;
|
function loadsmiplemodel(){
|
$('#loading').show();
|
viewer.imageryLayers.remove(tdtannoimagery,false);
|
viewer.imageryLayers.remove(googleimagery,false);
|
viewer.imageryLayers.remove(tdtvectorimagery,false);
|
viewer.imageryLayers.remove(tdtvectoranoimagery,false);
|
viewer.imageryLayers.add(localimagery);
|
|
var promise = Cesium.GeoJsonDataSource.load('../../easy3dfile/data/buildings/buildings_haerbin.json');
|
promise.then(function(dataSource) {
|
viewer.dataSources.add(dataSource);
|
smiplemodeldata = dataSource;
|
var entities = dataSource.entities.values;
|
var colorHash = {};
|
for (var i = 0; i < entities.length; i++) {
|
var entity = entities[i];
|
var name = entity.properties.name;
|
var color;
|
|
color = Cesium.Color.DEEPSKYBLUE.withAlpha(1.0);
|
|
entity.polygon.outline = false;
|
var alphamaterial = new Cesium.Material({
|
fabric: {
|
type: 'Image',
|
uniforms: {
|
image: '../images/building.png',
|
},
|
}
|
});
|
entity.polygon.material = alphamaterial;
|
entity.polygon.heightReference = Cesium.HeightReference.RELATIVE_TO_GROUND;
|
entity.polygon.extrudedHeight = 0.0;
|
entity.polygon.extrudedHeightReference = Cesium.HeightReference.CLAMP_TO_GROUND;
|
}
|
$('#loading').hide();
|
}).otherwise(function(error){
|
swal(error,"请重试!","error");
|
});
|
viewer.camera.flyTo({
|
destination : Cesium.Cartesian3.fromDegrees(126.60329039879346,45.74025270878488, 500),
|
orientation : {
|
heading : Cesium.Math.toRadians(0.0),
|
pitch : Cesium.Math.toRadians(-20.0),
|
roll : 0.0
|
}
|
});
|
addPOMListener();
|
}
|
function removesmiplemodel(){
|
viewer.dataSources.remove(smiplemodeldata);
|
viewer.imageryLayers.remove(localimagery,false);
|
viewer.imageryLayers.add(tdtannoimagery);
|
viewer.imageryLayers.add(googleimagery);
|
}
|
//交通流动线
|
var roadodline;
|
function addODlines(){
|
var lineheight = 15;
|
if(isTerrainShow){
|
lineheight = 1000;
|
}
|
var odOption = {
|
viewer: viewer,
|
geoJsonUrl: '../../easy3dfile/data/map/road.geojson',
|
linecolor: Cesium.Color.GOLD,//ORANGE;//ORANGE;//GOLD;//底线颜色
|
linewidth: 6.0,//底线宽度
|
lineheight: lineheight,//底线高度
|
lineglow: 0.15,//底线光晕宽度
|
tracecolor: Cesium.Color.WHITE,//ORANGE;//GOLD;//尾迹线颜色
|
tracewidth: 28.0,//尾迹线宽度
|
timeDuration: 1.0,//各个尾迹线发出的时间间隔
|
moveBaseDuration: 2.0,//各个尾迹线的速度,数值越大越慢
|
};
|
roadodline = CesiumODline.loadGeoJson(odOption);
|
}
|
function removeODlines(){
|
CesiumODline.removeJson(viewer);
|
}
|
|
|
/***************************上:加载基础三维地图;下:地图工具*************************/
|
|
|
//添加重点地名地址标记,数据来源:@baseMapLabelData.js
|
var importantLableArr = [];//重点地名地址标记数组
|
function showImportantLable(){
|
//计算当前城市的经纬度与米的换算比
|
if(tmRoadLable.length!=0){
|
var yPerimeter = 40075016.68557849;
|
var curlat = Number(tmRoadLable[0].position[1].toString().split('.')[0])*Math.PI/180;
|
var xPerimeter = yPerimeter * Math.cos(curlat);
|
var yperi = 360/yPerimeter;
|
var xperi = 360/xPerimeter;
|
|
//显示重要道路标记
|
for (var i=0;i<tmRoadLable.length;i++){
|
var point = Cesium.Cartesian3.fromDegrees(
|
tmRoadLable[i].position[0],
|
tmRoadLable[i].position[1],
|
tmRoadLable[i].position[2]);
|
var textCanvas = document.createElement('canvas');
|
textCanvas.width = 40;
|
textCanvas.height = 40;
|
var context = textCanvas.getContext("2d");
|
/*context.fillStyle = "#4B0082";
|
context.fillRect(0, 0, 40, 40);*/
|
context.font = "36px bolder Microsoft YaHei";
|
context.fillStyle = "#fff";
|
context.textAlign = "center";
|
context.textBaseline = "middle";
|
context.strokeStyle = "#BA55D3";
|
context.lineWidth = "1";
|
context.fillText(tmRoadLable[i].name, 20, 20);
|
context.strokeText(tmRoadLable[i].name, 20, 20);
|
var roadLable = viewer.entities.add({
|
//position : point,
|
show : true,
|
rectangle: {
|
coordinates : Cesium.Rectangle.fromDegrees(
|
tmRoadLable[i].position[0]-5*xperi,
|
tmRoadLable[i].position[1]-5*yperi,
|
tmRoadLable[i].position[0]+5*xperi,
|
tmRoadLable[i].position[1]+5*yperi
|
),
|
material : textCanvas,
|
classificationType : Cesium.ClassificationType.BOTH
|
}
|
});
|
|
importantLableArr.push(roadLable);
|
}
|
}
|
//显示重要地名标记
|
for (var i=0;i<importantLable.length;i++){
|
var point = Cesium.Cartesian3.fromDegrees(
|
importantLable[i].position[0],
|
importantLable[i].position[1],
|
importantLable[i].position[2]);
|
point = viewer.scene.clampToHeight(point);
|
var textlength = importantLable[i].name.length;
|
var imgurl = '';
|
var labelpixelOffset;
|
var billboardpixelOffset;
|
if(textlength<5){
|
imgurl = '../images/pinimg/35S.png';
|
labelpixelOffset = new Cesium.Cartesian2(49.0, -135.0);
|
billboardpixelOffset = new Cesium.Cartesian2(36.0, 0.0);
|
}else if(4<textlength&&textlength<9){
|
imgurl = '../images/pinimg/35M.png';
|
labelpixelOffset = new Cesium.Cartesian2(85.0, -135.0);
|
billboardpixelOffset = new Cesium.Cartesian2(72.0, 0.0);
|
}else{
|
imgurl = '../images/pinimg/35L.png';
|
labelpixelOffset = new Cesium.Cartesian2(122.0, -135.0);
|
billboardpixelOffset = new Cesium.Cartesian2(109.0, 0.0);
|
}
|
var ilLable = viewer.entities.add({
|
position : point,
|
billboard : {
|
image : imgurl,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
pixelOffset : billboardpixelOffset,
|
scaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
},label : {
|
show : true,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : 'bold 16px Helvetica',
|
fillColor : Cesium.Color.WHITE,
|
text : importantLable[i].name,
|
pixelOffset : labelpixelOffset,
|
disableDepthTestDistance : 100000000,
|
scaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
}
|
});
|
//添加图片标签
|
var imgSrc = '';
|
switch (importantLable[i].name) {
|
case '公安局':
|
imgSrc = '../images/policeIcon.png';
|
break;
|
case '市政府': case '市委': case '政协': case '人大':
|
imgSrc = '../images/redstar.png';
|
break;
|
default:
|
break;
|
}
|
if(imgSrc!==''){
|
var imgLable = viewer.entities.add({
|
name : importantLable[i].name,
|
position : point,
|
billboard : {
|
image : imgSrc,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
width : 32,
|
height : 32,
|
pixelOffset : new Cesium.Cartesian2(0.0, -160.0),
|
scaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
},
|
});
|
importantLableArr.push(imgLable);
|
}
|
importantLableArr.push(ilLable);
|
}
|
}
|
//删除重点单位标记
|
function closeImportantLable(){
|
for(var i = 0;i<importantLableArr.length;i++){
|
viewer.entities.remove(importantLableArr[i]);
|
}
|
importantLableArr.length=0;
|
}
|
//添加道路线标记
|
var roadLableArr = [];
|
function showRoadLable() {
|
$.each(crossLineArr, function(index,value) {
|
var roadLable = viewer.entities.add({
|
polyline : {
|
positions : Cesium.Cartesian3.fromDegreesArrayHeights(value),
|
width : 3.0,
|
material : new Cesium.PolylineDashMaterialProperty({
|
color : Cesium.Color.YELLOW,
|
dashLength : 16
|
}),
|
clampToGround : true
|
}
|
});
|
roadLableArr.push(roadLable);
|
});
|
}
|
//删除道路线标记
|
function closeRoadLable() {
|
for (var i = 0; i < roadLableArr.length; i++) {
|
viewer.entities.remove(roadLableArr[i]);
|
}
|
roadLableArr.length = 0;
|
}
|
//恢复初始位置
|
function wholeView(){
|
viewer.camera.setView({
|
destination : Cesium.Cartesian3.fromDegrees(initView.lon,initView.lat,initView.height),
|
orientation : {
|
heading : Cesium.Math.toRadians(initView.heading),
|
pitch : Cesium.Math.toRadians(initView.pitch),
|
roll : 0
|
}
|
});
|
}
|
//地名地址搜索
|
function searchPOI(){
|
var poiname = $("#poiname").val();
|
if(poiname!=''){
|
var camPoiR = viewer.camera.position;
|
var camCartographic = Cesium.Cartographic.fromCartesian(camPoiR);
|
var camlng = Cesium.Math.toDegrees(camCartographic.longitude);
|
var camlat = Cesium.Math.toDegrees(camCartographic.latitude);
|
var posstr = camlat+','+camlng;
|
var options = {
|
'poiname':poiname,
|
'posstr':posstr,
|
'viewer':viewer,
|
'color':Cesium.Color.RED,
|
'img':'../images/pinimg/34.png',
|
'resultId':'poiresult'
|
};
|
CesiumPOI.suggestion(options);
|
$('#poiresult').show();
|
$('#poiresult').animate({'height':'600px',opacity:1},1000);
|
addPOMListener();
|
CesiumPop.bindPopGlobeEventHandler(viewer);
|
}else{
|
swal("请输入地名地址关键词!","请重试!","error");
|
}
|
}
|
//关闭名址查询结果
|
function closePOIResult(){
|
$('#poiresult').animate({'height':'0px',opacity:0},1000,function(){
|
$('#poiresult').hide();
|
});
|
CesiumPOI.clear(viewer);
|
CesiumPop.clearDivPop(viewer);
|
}
|
//查询单个名址的详细信息
|
function getPOIDetailById(id){
|
CesiumPOI.detail(id);
|
}
|
|
|
/***************************上:地图工具;下:场景中所有图标点击操作监听**********************/
|
|
|
//场景中所有图标点击选取获得数据的操作监听句柄
|
var pomhandler;//操作监听句柄对象
|
function addPOMListener(){
|
pomhandler = pomhandler && pomhandler.destroy();
|
pomhandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
|
var id;
|
pomhandler.setInputAction(function(movement){
|
var pickedObject = viewer.scene.pick(movement.position);
|
if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id)) {
|
//判断拾取的是pin还是ClassificationPrimitive
|
//若是pin ,pickedObject.id为一个对象,需要读取pickedObject.id._id获取id
|
//若是ClassificationPrimitive,pickedObject.id则是字符串,直接获取id
|
if(typeof pickedObject.id =="string"){
|
id = pickedObject.id;
|
}else{
|
id = pickedObject.id._id;
|
}
|
var type = id.substring(0,2);
|
var pomid = id.substring(2);
|
switch(type){
|
case 'kp'://重点人口
|
case 'ke':
|
getKeypeopleById(pomid);
|
break;
|
case 'fp'://流动人口
|
case 'fe':
|
getFlowpeopleById(pomid);
|
break;
|
case 'hp'://实有房屋
|
case 'he':
|
getHouseById(pomid);
|
break;
|
case 'kd'://实有重点单位
|
getKeyDepartmentById(pomid);
|
break;
|
case 'fc'://消防列管
|
getFireControlById(pomid);
|
break;
|
case 'ss'://治安卡口
|
getSecuritySById(pomid);
|
break;
|
case 'bp'://行业场所
|
case 'be':
|
getBusinessById(pomid);
|
break;
|
case 'es'://应急物资
|
getEmergencySupplyById(pomid);
|
break;
|
case 'ca'://摄像头
|
case 'rc'://接处警应急摄像头
|
highlightVideoPin(pomid);
|
if(videoTreeObjList){
|
videoTreeObjList.selectNode(videoTreeObjList.getNodeByParam("id",pomid,null));
|
}
|
getVideoById_3D(pomid);
|
break;
|
case 'po'://人员
|
case 'rp'://接处警应急人员
|
var position = pickedObject.id._position._value;
|
getPoliceById_3D(pomid,position);
|
break;
|
case 'pc'://车辆
|
case 'rc'://接处警应急车辆
|
var position = pickedObject.id._position._value;
|
getPoliceCarById_3D(pomid,position);
|
break;
|
case 'pn'://网格
|
case 'pa'://巡区
|
getPoliceNetById(pomid);
|
break;
|
case 'cs'://案件
|
getCaseById_3D(pomid);
|
break;
|
case 'bu'://建筑物
|
getBuildingById(pomid);
|
break;
|
case 'ff'://智能识别追踪记录
|
getFaceFollowById(pomid);
|
break;
|
case 'fa'://智能识别
|
getFaceAlarmById(pomid);
|
break;
|
case 'cd'://刷卡记录
|
getCardById(pomid);
|
break;
|
case 'pi'://名址搜索
|
getPOIDetailById(pomid);
|
break;
|
case 'fl'://分层分户
|
queryKeypeopleByAddId(pomid);
|
break;
|
default:
|
break;
|
}
|
}
|
},Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
var currentObjectId;
|
var currentPrimitive;
|
var currentColor;
|
var currentShow;
|
var attributes;
|
pomhandler.setInputAction(function(movement){
|
var pickedObject = viewer.scene.pick(movement.endPosition);
|
if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id)) {
|
if (pickedObject.id === currentObjectId ) {
|
return;
|
}
|
if (Cesium.defined(currentObjectId)) {
|
attributes = currentPrimitive.getGeometryInstanceAttributes(currentObjectId);
|
if(attributes!=undefined){
|
if(currentColor!=undefined){
|
attributes.color = currentColor;
|
}else{
|
attributes.color = Cesium.Color.YELLOW;
|
}
|
attributes.show = currentShow;
|
}
|
currentObjectId = undefined;
|
currentPrimitive = undefined;
|
currentColor = undefined;
|
currentShow = undefined;
|
}
|
}
|
if (Cesium.defined(pickedObject)
|
&& Cesium.defined(pickedObject.primitive)
|
&& Cesium.defined(pickedObject.id)
|
&& Cesium.defined(pickedObject.primitive.getGeometryInstanceAttributes)
|
&& pickedObject.id._id !== 'cameraAreaId'
|
&& pickedObject.id._id !== 'ppcAreaId'
|
&& pickedObject.id._id !== 'comEntity') {
|
currentObjectId = pickedObject.id;
|
currentPrimitive = pickedObject.primitive;
|
attributes = currentPrimitive.getGeometryInstanceAttributes(currentObjectId);
|
currentColor = attributes.color;
|
currentShow = attributes.show;
|
if (!viewer.scene.invertClassification) {
|
attributes.color = [ 245, 245, 0, 128 ];
|
}
|
attributes.show = [ 1 ];
|
} else if (Cesium.defined(currentObjectId)) {
|
attributes = currentPrimitive.getGeometryInstanceAttributes(currentObjectId);
|
if(attributes!=undefined){
|
if(currentColor!=undefined){
|
attributes.color = currentColor;
|
}else{
|
attributes.color = Cesium.Color.YELLOW;
|
}
|
attributes.show = currentShow;
|
}
|
currentObjectId = undefined;
|
currentPrimitive = undefined;
|
currentColor = undefined;
|
}
|
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
}
|
|
|
/***************************上:场景中所有图标点击操作监听;下:公共地图方法**********************/
|
|
|
//公共方法:单击行场景跳转至相应区域
|
function flyToLocation(position){
|
viewer.camera.flyTo({
|
destination : Cesium.Cartesian3.fromDegrees(Number(position[0]), Number(position[1]), Number(position[2]))
|
});
|
}
|
function flyToDestination(lng,lat,height){
|
viewer.camera.flyTo({
|
destination : Cesium.Cartesian3.fromDegrees(Number(lng), Number(lat), Number(height))
|
});
|
}
|
|
function flyToDestination(lng,lat,height){
|
viewer.camera.flyTo({
|
destination : Cesium.Cartesian3.fromDegrees(Number(lng), Number(lat), Number(height))
|
});
|
}
|
|
//跳转到cart视角
|
function moveToWin(x,y,z,h,p){
|
viewer.camera.setView({
|
destination : Cesium.Cartesian3.fromElements(Number(x),Number(y),Number(z)),
|
orientation : {
|
heading : Number(h),
|
pitch : Number(p),
|
roll : 0
|
}
|
});
|
}
|
//跳转到经纬度视角
|
function moveToDegrees(x,y,z,h,p){
|
viewer.camera.setView({
|
destination : Cesium.Cartesian3.fromDegrees(Number(x),Number(y),Number(z)),
|
orientation : {
|
heading : Number(h),
|
pitch : Number(p),
|
roll : 0
|
}
|
});
|
}
|