document.write(''); /* * 车辆监督:实时定位和轨迹方法 */ //打开车辆定位功能的交互操作 var policeCarInterval; var deviceListCar=[]; //构建车辆目录树方法 function createZTree(data,count){ //构建目录树 var treeObjList = null; if (data !== undefined || data != null) { var setting = { check : { enable : true, autoCheckTrigger : true, chkboxType : { "Y" : "s", "N" : "s" } }, data : { simpleData : { enable : true } }, callback : { onCheck : carLayerzTreeOnCheck, onClick : carLayerzTreeOnClick, }, view : { showIcon : showIconForTree, selectedMulti : true, //可以多选 fontCss : setFontCss, //状态颜色回调函数 } }; var treeListArray = []; var treeName = "车辆载具目录树 "+" (共"+count+"辆)"; var pNode = {id:0, pId:"", name:treeName, isNode:false, icon:"../images/treeicon/car1.png"}; treeListArray.push(pNode); for (var i = 0; i < data.length; i++) { var j = {}; j.id = data[i].carId; j.pId = 0; j.name = data[i].policeType+'('+data[i].carLicense+')'; j.highlight = false; j.isNode = true; j.phone = data[i].cardNum; treeListArray.push(j); } treeObjList = $.fn.zTree.init($("#policeCarTree"), setting, treeListArray); policeCarInterval = window.setInterval(function(){ freshPoliceCarPos(deviceListCar); },30000); //父节点显示图标 function showIconForTree(treeId, treeNode) { return treeNode.isParent == true; } //状态变化不同颜色的回调函数 function setFontCss(treeId, treeNode) { return treeNode.checked == true ? {color:"white"} : {color:"gray"}; }; //点击车辆check执行 function carLayerzTreeOnCheck(event, treeId, treeNode) { var node = treeObjList.getNodeByParam('id',treeNode.id,null); treeObjList.updateNode(node); treeObjList.reAsyncChildNodes(node,'refresh',false); if(treeNode.level!=0){ if(treeNode.name!=undefined){ var result = treeNode.name.match(/\(([^)]*)\)/); } if(treeNode.checked){ if(deviceListCar.length==0||deviceListCar.indexOf(result[1])==-1){ deviceListCar.push(result[1]); } freshPoliceCarPos(deviceListCar); }else{ deviceListCar.splice(deviceListCar.indexOf(result[1]),1); viewer.entities.removeById('pc'+treeNode.id); closeVideoPop(treeNode.id); } } } } } //停止刷新车辆位置 function stopFreshPoliceCarPos(){ window.clearInterval(policeCarInterval); } //创建车辆标签 var policecar3D_marks=[]; function createPoliceCarPin(url,id,point,carLicense,cartype){ var carPin = viewer.entities.getById('pc'+id); if(carPin == undefined){ policecar3D_marks.push(viewer.entities.add({ name : '车辆', id :'pc'+id, position : point, billboard : { image : url, verticalOrigin : Cesium.VerticalOrigin.BOTTOM, pixelOffset : new Cesium.Cartesian2(51.0, 0.0), 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 17px Helvetica', fillColor : Cesium.Color.WHITE, text : carLicense, pixelOffset : new Cesium.Cartesian2(67.0, -135.0), disableDepthTestDistance : 100000000, scaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2), pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2), } })); }else{ carPin.position = point; } } //车辆实时监督 function showPoliceCar_3D(data){ var url = ''; deletePoliceCar3DMarks(); $.each(data, function() { var carId = this.car.carId; var carLicense = this.car.carLicense; var cartype = this.car.policeType; if(this.realdata!=undefined){ var point = Cesium.Cartesian3.fromDegrees( Number(this.realdata.longitude), Number(this.realdata.latitude), Number(this.realdata.altitude)+mancarHeight); var clampedpoint = viewer.scene.clampToHeight(point);//将悬空的点落到三维或地形数据上 switch (cartype) { case '巡逻车': url = '../images/pinimg/13.png'; break; case '警卫车': url = '../images/pinimg/15.png'; break; case '防爆装甲车': url = '../images/pinimg/14.png'; break; default: url = '../images/pinimg/16.png'; break; }; createPoliceCarPin(url,carId,clampedpoint,carLicense,cartype); //如有气泡,更新气泡位置 if(document.getElementById("popupDiv"+carId)){ var pos = {"lon":Number(this.realdata.longitude),"lat":Number(this.realdata.latitude),"alt":Number(this.realdata.altitude)+mancarHeight}; CesiumPop.updatePopPos(viewer,carId,pos,70,260,185,Cesium.Color.WHITE); } } }); CesiumPop.bindPopGlobeEventHandler(viewer) addPOMListener(); } function deletePoliceCar3DMarks(){ for(var i = 0; i < policecar3D_marks.length; i++){ viewer.entities.remove(policecar3D_marks[i]); // 将标注从场景移除 } policecar3D_marks.length=0; } //历史轨迹回放 function carHisplay_3D(data){ carHisStop3D(); var traceList = []; for(var i=0; i0){startTime = result.startTime;} if(Cesium.JulianDate.compare(stopTime, result.stopTime)<0){stopTime = result.stopTime;} viewer.clock.startTime = startTime.clone(); viewer.clock.stopTime = stopTime.clone(); viewer.clock.currentTime = startTime.clone(); viewer.clock.clockRange = Cesium.ClockRange.UNBOUNDED; viewer.clock.multiplier = 10; viewer.timeline.zoomTo(startTime, stopTime); layer.closeAll(); } //添加轨迹线和实体等 var policecarLine; var policecar_mark; var policecar_mark_start; var policecar_mark_end; function createCarLines(nodes,lineId,imgName){ //添加轨迹线 policecarLine = viewer.entities.add({ polyline : { positions : Cesium.Cartesian3.fromDegreesArrayHeights(nodes), width : 7.0, material : new Cesium.PolylineGlowMaterialProperty({ color : Cesium.Color.BLUE, glowPower : 0.25 }), clampToGround : true, classificationType : Cesium.ClassificationType.BOTH } }); //添加移动实体 var nodesPosition = []; var times = []; var startTime = Cesium.JulianDate.now(startTime); for (var i = 0; i < nodes.length / 3; i++) { var time = new Cesium.JulianDate(); Cesium.JulianDate.addMinutes(startTime, i * 0.5, time); times.push(time); nodesPosition.push(Cesium.Cartesian3.fromDegrees( nodes[i * 3], nodes[i * 3 + 1], nodes[i * 3 + 2] + 2.5)); } var stopTime = times[times.length - 1]; //插值 var property = new Cesium.SampledPositionProperty(); property.addSamples(times, nodesPosition); var pinBuilder = new Cesium.PinBuilder(); Cesium.when(pinBuilder.fromUrl('../images/'+imgName, Cesium.Color.RED , 48),function(canvas) { policecar_mark = viewer.entities.add({ id :lineId, position : property, billboard : { image : canvas.toDataURL(), verticalOrigin : Cesium.VerticalOrigin.BOTTOM, scale : 1, //大于20000显示pin,隐藏模型 pixelOffset:new Cesium.Cartesian2(0,0), pixelOffsetScaleByDistance:new Cesium.NearFarScalar(1.5e2,3.0,1.5e7,0.7), translucencyByDistance :new Cesium.NearFarScalar(19999,0,20000,1) }, model : { uri : '../../easy3dfile/data/model/military/99tank.gltf', minimumPixelSize : 128, maximumScale : 20, scale : 0.008, //小于20000显示模型,隐藏pin distanceDisplayCondition:new Cesium.DistanceDisplayCondition(0,20000), } }); }); //起点 var startpoint = Cesium.Cartesian3.fromDegrees( Number(nodes[0]), Number(nodes[1]), Number(nodes[2])); policecar_mark_start = viewer.entities.add({ position : startpoint, billboard : { image : pinBuilder.fromText('起',Cesium.Color.GREEN,40).toDataURL(), verticalOrigin : Cesium.VerticalOrigin.BOTTOM, } }); //终点 var endpoint = Cesium.Cartesian3.fromDegrees( Number(nodes[i-2]), Number(nodes[i-1]), Number(nodes[i])); policecar_mark_end = viewer.entities.add({ position : endpoint, billboard : { image : pinBuilder.fromText('终',Cesium.Color.RED,40).toDataURL(), verticalOrigin : Cesium.VerticalOrigin.BOTTOM, } }); return { startTime:startTime, stopTime:stopTime }; } //历史轨迹停止 function carHisStop3D(){ viewer.entities.remove(policecarLine); viewer.entities.remove(policecar_mark); viewer.entities.remove(policecar_mark_start); viewer.entities.remove(policecar_mark_end); layer.closeAll(); } //圈内图标高亮 function highlightCarPin(data){ for(var i=0;i' + '
' + '
'+data.carLicense+'-5G图传
' + '' + '' + '' + '
战斗能力综合评分:'+num+'
' + '
' + '
' + '
' if(dataCE!=undefined){ for(var i=0;i
' } }else{ content+= '
未佩戴装备未佩戴装备
' } content+='
' + '
' + '
' + '
' + '
' + '
'; var cartographic = Cesium.Cartographic.fromCartesian(posCart); var lon = Cesium.Math.toDegrees(cartographic.longitude); var lat = Cesium.Math.toDegrees(cartographic.latitude); var options = { "viewer":viewer, "id":data.carId, "popupWidth":300, "popupHeight":185, "pos":{"lon":Number(lon),"lat":Number(lat),"alt":Number(cartographic.height)}, "extentHeight":70, "extentColor":Cesium.Color.WHITE, "content":content }; CesiumPop.addDivPop(options); }