document.write(''); //接处警应急:RHPC=receiveHandlePoliceCase //指定三维接处警点 var emergencyPosArr = [];//接处警点坐标数组 function RHPCPoi(){ clearHandler(); clearEmergencyAgain(); var emergencyStr = $("#emergencyStr").val(); if(emergencyStr != ""){ var RHPChandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); RHPChandler.setInputAction(function(movement) { //获取鼠标点击处的坐标 var cartesian = viewer.scene.pickPosition(movement.position); var cartographic = Cesium.Cartographic.fromCartesian(cartesian); var height = cartographic.height;//模型高度 if(Number(height)<0){ var ray = viewer.camera.getPickRay(movement.position); cartesian = viewer.scene.globe.pick(ray,viewer.scene); } cartographic = Cesium.Cartographic.fromCartesian(cartesian); var lng = Cesium.Math.toDegrees(cartographic.longitude); var lat = Cesium.Math.toDegrees(cartographic.latitude); var height = cartographic.height;//模型高度 emergencyPosArr = [lng,lat,height]; createEmergencyPin(cartesian,emergencyStr);//创建标注 startMovePin(); RHPChandler.destroy(); }, Cesium.ScreenSpaceEventType.LEFT_CLICK); }else{ swal("请先输入案件名称!","请重试!","error"); } } //创建案件图标 function createEmergencyPin(cartesian,emergencyStr){ var rhpcPin = viewer.entities.getById("rhpcPinId"); if(rhpcPin == undefined){ viewer.entities.add({ id :"rhpcPinId", position : cartesian.clone(), billboard : { image : '../images/pinimg/01.png', verticalOrigin : Cesium.VerticalOrigin.BOTTOM, 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 : '16px Helvetica', fillColor : Cesium.Color.YELLOW, style : Cesium.LabelStyle.FILL_AND_OUTLINE, text : emergencyStr, pixelOffset : new Cesium.Cartesian2(0.0, -15.0), pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1.5e2, 3.0, 1.5e7, 0.5), showBackground: true, backgroundColor: Cesium.Color.RED.withAlpha(0.5), }*/ }); }else{ rhpcPin.position = cartesian.clone(); rhpcPin.label.text = emergencyStr; } } //选中拖拽移动图标到新位置 var movehandler; function startMovePin(){ movehandler = movehandler && movehandler.destroy(); movehandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); var leftDownFlag = false; var pointDraged; movehandler.setInputAction(function(event){ pointDraged = viewer.entities.getById("rhpcPinId");//只选取案件定位图标的entity //pointDraged = viewer.scene.pick(event.position);//选取场景中任意鼠标选中的图标的entity leftDownFlag = true; if (pointDraged) { viewer.scene.screenSpaceCameraController.enableRotate = false;//锁定相机 } },Cesium.ScreenSpaceEventType.LEFT_DOWN); movehandler.setInputAction(function(event){ leftDownFlag = false; pointDraged = null; viewer.scene.screenSpaceCameraController.enableRotate = true;//解锁相机 },Cesium.ScreenSpaceEventType.LEFT_UP); movehandler.setInputAction(function(movement){ if (leftDownFlag && pointDraged != null) { //获取鼠标点击处的坐标 var cartesian = viewer.scene.pickPosition(movement.endPosition); var cartographic = Cesium.Cartographic.fromCartesian(cartesian); var height = cartographic.height;//模型高度 if(Number(height)<0){ var ray = viewer.camera.getPickRay(movement.endPosition); cartesian = viewer.scene.globe.pick(ray,viewer.scene); } pointDraged.position = cartesian.clone();//选中案件定位图标时直接用.position //pointDraged.id.position = cartesian.clone();//选中任意图标时,需+id cartographic = Cesium.Cartographic.fromCartesian(cartesian); var lng = Cesium.Math.toDegrees(cartographic.longitude); var lat = Cesium.Math.toDegrees(cartographic.latitude); var height = cartographic.height;//模型高度 emergencyPosArr = [lng,lat,height]; } },Cesium.ScreenSpaceEventType.MOUSE_MOVE); } function stopMovePin(){ movehandler = movehandler && movehandler.destroy(); } //启动接处警应急,计算周边警力资源 var ScanPostStages = []; var subLable = []; var caseNameHis; function showRHPC(){ // clearEmergencyAgain(); if(emergencyPosArr.length == 0){ swal("请先定位案件!","请重试!","error"); return; }else if(caseNameHis == $("#emergencyStr").val()){ swal("案件名称重复,请修改再生成案件!","请重试!","error"); return; } caseNameHis = $("#emergencyStr").val(); stopMovePin(); clearRHPC(); var options = [{ viewer: viewer, lon: emergencyPosArr[0], lat: emergencyPosArr[1], maxRadius: Number($("#ePoliceRadius").val()), duration: 12000, scanColor: Cesium.Color.RED },{ viewer: viewer, lon: emergencyPosArr[0], lat: emergencyPosArr[1], maxRadius: Number($("#eCamRadius").val()), duration: 9000, scanColor: Cesium.Color.GREEN }]; ScanPostStages.push(CesiumRadarScan.add(options[0])); ScanPostStages.push(CesiumRadarScan.add(options[1])); var point1=Cesium.Cartesian3.fromDegrees(emergencyPosArr[0],emergencyPosArr[1]+0.0007, emergencyPosArr[2]+40); var point2=Cesium.Cartesian3.fromDegrees(emergencyPosArr[0],emergencyPosArr[1]+0.0016, emergencyPosArr[2]+40); var line1 = viewer.entities.add({ position :point1, label : { showBackground:true, backgroundColor: Cesium.Color.BLACK.withAlpha(0.9), text : "监控圈", font : 'bold 20px Helvetica', fillColor : Cesium.Color.GREEN, } }); var line2 = viewer.entities.add({ position :point2, label : { showBackground:true, backgroundColor: Cesium.Color.BLACK.withAlpha(0.9), text : "封控圈", font : 'bold 20px Helvetica', fillColor : Cesium.Color.RED, } }); subLable.push(line1); subLable.push(line2); //接处警应急定位报警写入案件中 insertEmergencyCase($("#emergencyStr").val(),emergencyPosArr); // 显示100米范围内得摄像头,并显示贴地视频 getRHPCVideo(emergencyPosArr); //显示200米范围内的人员和车辆 getRHPCPolice(emergencyPosArr); getRHPCCar(emergencyPosArr); $('#telling').show(); //执行15秒后,关闭雷达圈 setTimeout(function(){ clearRHPC(); }, 15000); } function clearRHPC(){ CesiumRadarScan.removes(viewer,ScanPostStages); for(var i=0;i3){ drawPolygon(); } createPoint(earthPosition); } },Cesium.ScreenSpaceEventType.LEFT_CLICK); handler.setInputAction(function(movement) { var newPosition = viewer.scene.pickPosition(movement.endPosition); var cartographic = Cesium.Cartographic.fromCartesian(newPosition); var height = cartographic.height;//模型高度 if(Number(height)<0){ var ray = viewer.camera.getPickRay(movement.endPosition); newPosition = viewer.scene.globe.pick(ray,viewer.scene); } activeShapePoints.pop(); activeShapePoints.push(newPosition); }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); handler.setInputAction(function(movement){ handler = handler && handler.destroy(); if(activeShapePoints.length >2){ drawPolygon(); selectCommandCar(comPoints);//向后台请求数据,并计算符合条件的数据police selectCommandPolice(comPoints)//向后台请求数据,并计算符合条件的数据car clearCommandSelect(); } },Cesium.ScreenSpaceEventType.RIGHT_CLICK); } //选中并填入正在对讲人的姓名 var emergencypowerArr = []; function startintercom(data,type){ var intercom = ''; if(type=='police'){ for ( var i = 0; i < data.length; i++) { if(!emergencypowerArr.some(item => item.deviceNum == data[i].deviceNum)){ intercom += data[i].name +'('+data[i].origin+')'+' | '; emergencypowerArr.push(data[i]); } } }else{ for ( var i = 0; i < data.length; i++) { if(!emergencypowerArr.some(item => item.plateNo == data[i].plateNo)){ intercom += data[i].plateNo + ' | '; emergencypowerArr.push(data[i]); } } } var curStr = $('#intercom').val()+intercom; $('#intercom').val(curStr); } //停止通话 function stopintercom(){ emergencypowerArr = []; $('#telling').hide(); clearCommandSelect(); clearRouteLines(); $('#intercom').val(""); } //显示多个路径导航 function showRoadNavs(data) { if (emergencyPosArr.length != 0) { clearRouteLines(); for (var i = 0; i < data.length; i++) { var latitude = data[i].realdata == undefined ? data[i].latitude : data[i].realdata.latitude; var longitude = data[i].realdata == undefined ? data[i].longitude : data[i].realdata.longitude; var startpoi = latitude + ',' + longitude; var endpoi = emergencyPosArr[1] + ',' + emergencyPosArr[0]; var url = "http://api.map.baidu.com/direction/v2/driving?origin=" + startpoi + "&destination=" + endpoi + "&coord_type=wgs84&tactics=5" + "&alternatives=0&ak=ZpRjzwQe7dQCVzTR9zytcdLO"; getRoadNavs(url); } } else { swal("请定位案发或嫌犯位置!","请重试!","error"); } } //创建多路径线(进一步可增加动画或流动线效果) var steplinesArr = []; var steplabelsArr = []; function showRouteLines(data){ if(data.status==0){ for ( var i = 0; i < data.result.routes[0].steps.length; i++) { var step = data.result.routes[0].steps[i]; var pathArr = step.path.split(/[,;]/); var wgs84pathArr = []; for ( var m = 0; m < pathArr.length; m=m+2) { var wgs84poi = bd09towgs84(pathArr[m],pathArr[m+1]); wgs84pathArr.push(wgs84poi); } var traConCount = 0; for ( var j = 0; j < step.traffic_condition.length; j++) { var traCon = step.traffic_condition[j]; var trafficStr = ""; var roadColor = Cesium.Color.YELLOW; switch (traCon.status) { case 0: trafficStr = "无路况"; roadColor = Cesium.Color.YELLOW; break; case 1: trafficStr = "畅通"; roadColor = Cesium.Color.YELLOW; break; case 2: trafficStr = "缓行"; roadColor = Cesium.Color.ORANGE; break; case 3: trafficStr = "拥堵"; roadColor = Cesium.Color.RED; break; case 4: trafficStr = "非常拥堵"; roadColor = Cesium.Color.DARKRED; break; default: break; } var subwgs84pathArr = wgs84pathArr.slice(traConCount,traConCount+traCon.geo_cnt+1); var linesubwgs84pathArr = []; for ( var n = 0; n < subwgs84pathArr.length; n++) { linesubwgs84pathArr.push(subwgs84pathArr[n][0],subwgs84pathArr[n][1]); } var stepline = viewer.entities.add({ polyline : { positions : Cesium.Cartesian3.fromDegreesArray(linesubwgs84pathArr), width : 8, material : new Cesium.PolylineOutlineMaterialProperty({ color : roadColor, outlineWidth : 2, outlineColor : Cesium.Color.BLACK }), clampToGround : true, classificationType : Cesium.ClassificationType.BOTH }, }); steplinesArr.push(stepline); var point = Cesium.Cartesian3.fromDegrees( Number(subwgs84pathArr[0][0]), Number(subwgs84pathArr[0][1]), 137); var clampedpoint = viewer.scene.clampToHeight(point); var steptext = ''; if(traConCount==0){ steptext = step.road_name+' | '+traCon.distance+'米 | '+trafficStr; }else{ steptext = traCon.distance+'米 | '+trafficStr; } if(i==0){ var hs = s_to_hs(Number(data.result.routes[0].duration)); steptext += "\n到警时间预测:"+hs; var steplabel = viewer.entities.add({ position : clampedpoint, billboard : { image : '../images/pinimg/37.png', verticalOrigin : Cesium.VerticalOrigin.BOTTOM, horizontalOrigin : Cesium.HorizontalOrigin.CENTER, scaleByDistance : new Cesium.NearFarScalar(300, 1, 60000, 0.2), pixelOffsetScaleByDistance : new Cesium.NearFarScalar(300, 1, 60000, 0.2), },label : { verticalOrigin : Cesium.VerticalOrigin.BOTTOM, horizontalOrigin : Cesium.HorizontalOrigin.CENTER, font : 'bold 15px Helvetica', fillColor : Cesium.Color.WHITE, text : steptext, disableDepthTestDistance : 100000000, pixelOffset : new Cesium.Cartesian2(0, -24.0), scaleByDistance : new Cesium.NearFarScalar(300, 1, 60000, 0.2), pixelOffsetScaleByDistance : new Cesium.NearFarScalar(300, 1, 60000, 0.2), } }); steplabelsArr.push(steplabel); traConCount = traConCount + traCon.geo_cnt; break; } } } }else{ swal("路径导航服务请求失败,请重试!","请重试!","error"); } } //清除多导航路线 function clearRouteLines(){ for ( var i = 0; i < steplinesArr.length; i++) { viewer.entities.remove(steplinesArr[i]); } steplinesArr.length = 0; for ( var j = 0; j < steplabelsArr.length; j++) { viewer.entities.remove(steplabelsArr[j]); } steplabelsArr.length = 0; } //再次定位案件清除之前所有 function clearEmergencyAgain(){ clearEmergency(); stopfollow(); ctrlFaceResultlist('none'); ctrlTargetFace('none'); policemanList = []; rePolicemanList = [] ; policeCarList = []; rePoliceCarList = []; }