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 = [];
}