document.write('<script src="../js/face_service.js"></script>');
|
/**
|
* 人脸识别
|
*/
|
var vscanvas;
|
var targetcanvas;
|
var facecxt;
|
var lineArr = [];//边线数组
|
var prefacevideoId;
|
var prefaceimgElement;
|
var isCanvasOnFirst = true;
|
var vsfaceEvent;
|
//创建人脸识别视频监控画面的画布,定格人脸识别视频画面并开启圈选人脸监听
|
function createvscanvas(videoId) {
|
prefacevideoId = videoId;
|
shootup();
|
$('#vscanvas').unbind(vsfaceEvent);
|
vsfaceEvent = $('#vscanvas').mousedown(function(e){
|
if(isCanvasOnFirst){
|
clearRect();
|
drawpoint(e);
|
isCanvasOnFirst = false;
|
}else{
|
drawpoint(e);
|
var imgwidth = Math.abs(lineArr[0].x-lineArr[1].x);
|
var imgheight = Math.abs(lineArr[0].y-lineArr[1].y);
|
var leftx = (lineArr[0].x>lineArr[1].x)?lineArr[1].x:lineArr[0].x;
|
var lefty = (lineArr[0].y>lineArr[1].y)?lineArr[1].y:lineArr[0].y;
|
var imgdata = facecxt.getImageData(leftx, lefty, imgwidth, imgheight);
|
targetcanvas = document.createElement('canvas');
|
targetcanvas.width = imgwidth;
|
targetcanvas.height = imgheight;
|
targetcanvas.getContext("2d").putImageData(imgdata,0,0);
|
facecxt.save();
|
facecxt.fillStyle = "rgba(0,0,0,0.8)";
|
facecxt.fillRect(0,0,vscanvas.width,vscanvas.height);
|
facecxt.beginPath();
|
facecxt.lineWidth = 2;
|
facecxt.setLineDash([6, 4]);
|
facecxt.lineTo(leftx, lefty);
|
facecxt.lineTo(leftx+imgwidth, lefty);
|
facecxt.lineTo(leftx+imgwidth, lefty+imgheight);
|
facecxt.lineTo(leftx, lefty+imgheight);
|
facecxt.lineTo(leftx, lefty);
|
facecxt.strokeStyle="red";
|
facecxt.stroke();
|
facecxt.closePath();
|
facecxt.clip();
|
facecxt.drawImage(prefaceimgElement,0,0,vscanvas.width,vscanvas.height);
|
facecxt.restore();
|
isCanvasOnFirst = true;
|
}
|
});
|
function drawpoint(e){
|
x = e.offsetX; // 鼠标落下时的X
|
y = e.offsetY; // 鼠标落下时的Y
|
lineObj = {"x":x,"y":y};
|
lineArr.push(lineObj);
|
facecxt.beginPath();
|
facecxt.arc(x, y, 5, 0, Math.PI * 2, true);
|
facecxt.closePath();
|
facecxt.strokeStyle = 'rgba(255,0,0,1)';
|
facecxt.stroke();
|
}
|
}
|
function shootup(){
|
var faceVideoElement = document.getElementById(prefacevideoId);
|
vscanvas = document.getElementById("vscanvas");
|
facecxt = vscanvas.getContext("2d");
|
facecxt.drawImage(faceVideoElement,0,0,vscanvas.width,vscanvas.height);
|
prefaceimgElement = document.createElement('img');
|
prefaceimgElement.src = vscanvas.toDataURL("image/jpeg");
|
}
|
function faceRecognition() {
|
if(lineArr.length!=0){
|
clearRect();
|
closeDrawFace();
|
ctrlTargetFace("block");
|
document.getElementById("targetfaceimg").src = targetcanvas.toDataURL("image/jpeg");
|
$('#faced').hide();
|
$('#facedbtn').hide();
|
$('#facing').show();
|
setTimeout(function(){
|
$('#facing').hide();
|
$('#faced').show();
|
$('#facedbtn').show();
|
startface();
|
}, 4000);
|
}else{
|
swal("请先框选人工智能识别的图像!","请重试!","error");
|
}
|
}
|
function startface(){
|
ctrlFaceResultlist('block');
|
queryKeypeopleByBlood();
|
}
|
var faceresultStr = '';
|
function showfaceresultlist(data){
|
faceresultStr = '';
|
var content = '';
|
var percent = [98,64,13];
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for ( var i = 0; i < data.length; i++) {
|
faceresultStr += data[i].keyId+",";
|
var position = data[i].address.poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "kp" + data[i].keyId,
|
"name": '查询结果',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "marker-stroked",
|
"marker-color": "#FFD700"
|
}
|
};
|
geojson.features.push(feature);
|
var nearEllipsoidId = 'ke' + data[i].keyId;
|
var pos = Cesium.Cartesian3.fromDegrees(Number(position[0]), Number(position[1]),Number(position[2]));
|
var color = Cesium.Color.GOLD.withAlpha(0.7);
|
createNearEllipsoid(nearEllipsoidId,'查询结果',pos,color,query2_overlays3D);
|
content += '<div id="' + data[i].keyId + '" onclick="moveToWin('+position[0]+','+position[1]+','+position[2]+','
|
+data[i].address.camHeading+','+data[i].address.camPitch+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += '"><div class="col-md-2 mycol"><img class="faceimg" src="'+data[i].imgurl+'"/></div>'
|
+ '<div class="col-md-2 mycol facepercent textshadow-p">'+percent[i]+'%</div>'
|
+ '<div class="col-md-8 mycol"><div class="row myrow-v">'
|
+ '<label class="col-md-5 mycol">'+data[i].name+'</label>'
|
+ '<label class="col-md-1 mycol">'+data[i].gender+'</label>'
|
+ '<label class="col-md-6 mycol">'+data[i].identity+'</label>'
|
+ '</div><div class="row myrow-v">'
|
+ '<label class="col-md-4 mycol">'+data[i].type+'</label>'
|
+ '<label class="col-md-4 mycol">'+data[i].nation+'</label>'
|
+ '<label class="col-md-4 mycol">'+data[i].birthday+'</label>'
|
+ '</div><label class="col-md-12 mycol">'+data[i].address.addName+'</label>'
|
+ '</div></div>'
|
}
|
faceresultStr = faceresultStr.substring(0, faceresultStr.length-1);
|
$('#faceresultlistcontent').html(content);
|
createClusterPin(geojson,"query");
|
}
|
function closefaceresult(){
|
ctrlTargetFace("none");
|
ctrlFaceResultlist('none');
|
stopfollow();
|
clearRouteLines();
|
deletePolice3DMarks();
|
deletePoliceCar3DMarks();
|
policemanList = [];
|
rePolicemanList = [] ;
|
policeCarList = [];
|
rePoliceCarList = [];
|
}
|
function clearRect() {
|
facecxt.clearRect(0,0,vscanvas.width,vscanvas.height);
|
facecxt.drawImage(prefaceimgElement,0,0,vscanvas.width,vscanvas.height);
|
lineArr = [];
|
isCanvasOnFirst = true;
|
}
|
//清除人脸识别画布
|
function removeface() {
|
clearRect();
|
}
|
//追踪嫌疑人
|
var prefollowdata = null;
|
var followpath = [];
|
var followPeopleArr = [];
|
function startfollow(){
|
$("#following").show();
|
//绘制人员轨迹
|
var followlineground = viewer.entities.add({
|
id : 'followlineground',
|
polyline : {
|
width : 7.0,
|
material : new Cesium.PolylineGlowMaterialProperty({
|
color : Cesium.Color.RED,
|
glowPower : 0.25
|
}),
|
clampToGround : true,
|
classificationType : Cesium.ClassificationType.BOTH
|
}
|
});
|
if(rhpcListArray.length!==0){
|
clearrhpcVideo();
|
}
|
setTimeout(function(){
|
CesiumPop.bindPopGlobeEventHandler(viewer);
|
//弹出监控画面
|
prefollowdata = getVideoAndShow(followvideo[0].id);
|
if(emergencyPosArr.length!=0){
|
var tmppoi = new Cesium.Cartesian3.fromDegrees(emergencyPosArr[0],emergencyPosArr[1],emergencyPosArr[2]);
|
followpath.push(tmppoi);
|
}
|
var poi = prefollowdata.camPosition.split(",");
|
var tmppoi = new Cesium.Cartesian3.fromDegrees(Number(poi[0]),Number(poi[1]),Number(poi[2]));
|
followpath.push(tmppoi);
|
addSuspectPin(tmppoi,followvideo[0].alarmTime);
|
followlineground.polyline.positions = followpath;
|
flyToLocation([Number(poi[0]),Number(poi[1]),Number(poi[2])+400]);
|
followPeopleArr = [Number(poi[0]),Number(poi[1]),Number(poi[2])];
|
document.getElementById("audioSource").play();
|
emergencyPosArr = [Number(poi[0]),Number(poi[1]),Number(poi[2])];
|
getPolicemanList(followPeopleArr);
|
getPoliceCarList(followPeopleArr);
|
}, 5000);
|
setTimeout(function(){
|
closeVideoPop(followvideo[0].id);
|
prefollowdata = getVideoAndShow(followvideo[1].id);
|
var poi = prefollowdata.camPosition.split(",");
|
var tmppoi = new Cesium.Cartesian3.fromDegrees(Number(poi[0]),Number(poi[1]),Number(poi[2]));
|
followpath.push(tmppoi);
|
addSuspectPin(tmppoi,followvideo[1].alarmTime);
|
followlineground.polyline.positions = followpath;
|
flyToLocation([Number(poi[0]),Number(poi[1]),Number(poi[2])+400]);
|
followPeopleArr = [Number(poi[0]),Number(poi[1]),Number(poi[2])+400];
|
document.getElementById("audioSource").play();
|
emergencyPosArr = [Number(poi[0]),Number(poi[1]),Number(poi[2])];
|
getPolicemanList(followPeopleArr);
|
getPoliceCarList(followPeopleArr);
|
}, 30000);
|
setTimeout(function(){
|
closeVideoPop(followvideo[1].id);
|
prefollowdata = getVideoAndShow(followvideo[2].id);
|
var poi = prefollowdata.camPosition.split(",");
|
var tmppoi = new Cesium.Cartesian3.fromDegrees(Number(poi[0]),Number(poi[1]),Number(poi[2]));
|
followpath.push(tmppoi);
|
addSuspectPin(tmppoi,followvideo[2].alarmTime);
|
followlineground.polyline.positions = followpath;
|
flyToLocation([Number(poi[0]),Number(poi[1]),Number(poi[2])+400]);
|
followPeopleArr = [Number(poi[0]),Number(poi[1]),Number(poi[2])+400];
|
document.getElementById("audioSource").play();
|
emergencyPosArr = [Number(poi[0]),Number(poi[1]),Number(poi[2])];
|
getPolicemanList(followPeopleArr);
|
getPoliceCarList(followPeopleArr);
|
}, 60000);
|
}
|
//追踪定位嫌犯位置并添加图标
|
var suspectArr = [];
|
function addSuspectPin(poi,alarmtime){
|
var alarmtimearr = alarmtime.split(' ');
|
var alarmtimen = alarmtimearr[0]+'\n'+alarmtimearr[1];
|
suspectArr.push(viewer.entities.add({
|
position : poi,
|
label : {
|
show : true,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : '16px Helvetica',
|
style : Cesium.LabelStyle.FILL_AND_OUTLINE,
|
fillColor : Cesium.Color.WHITE,
|
outlineColor : Cesium.Color.WHITE,
|
text : alarmtimen,
|
pixelOffset : new Cesium.Cartesian2(60.0, -130.0),
|
disableDepthTestDistance : 100000000,
|
scaleByDistance : new Cesium.NearFarScalar(300, 1, 20000, 0.3),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(300, 1, 20000, 0.3),
|
},
|
billboard : {
|
image : '../images/pinimg/02.png',
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
pixelOffset : new Cesium.Cartesian2(51.0, 0.0),
|
scaleByDistance : new Cesium.NearFarScalar(300, 1, 20000, 0.3),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(300, 1, 20000, 0.3),
|
}
|
}));
|
}
|
//结束追踪
|
function stopfollow(){
|
for (var i = 0; i < followvideo.length; i++) {
|
clearVideoOnEarth(followvideo[i].id);
|
}
|
CesiumPop.clearDivPop(viewer);
|
if(prefollowdata!=null){
|
stopVideoConvertor(prefollowdata);
|
}
|
if(viewer.entities.getById("followlineground")){
|
viewer.entities.removeById("followlineground");
|
}
|
for (var i = 0; i < suspectArr.length; i++) {
|
viewer.entities.remove(suspectArr[i]);
|
}
|
prefollowdata = null;
|
followpath = [];
|
suspectArr = [];
|
emergencyPosArr = [];
|
$("#following").hide();
|
}
|
/**
|
* 重点人员人脸识别报警
|
*/
|
//开始智能识别模拟
|
function startFaceAlarm(){
|
if(rhpcListArray.length!==0){
|
clearrhpcVideo();
|
}
|
setTimeout(function(){
|
CesiumPop.bindPopGlobeEventHandler(viewer);
|
var prealarmdata = getVideoAndShow(followvideo[3].id);
|
var poi = prealarmdata.camPosition.split(",");
|
var tmppoi = new Cesium.Cartesian3.fromDegrees(Number(poi[0]),Number(poi[1]),Number(poi[2]));
|
getKeypeopleByCardId(followvideo[3].alarmKPId,prealarmdata,followvideo[3]);
|
addAlarmPin(tmppoi,followvideo[3].alarmTime);
|
flyToLocation([Number(poi[0]),Number(poi[1]),Number(poi[2])+400]);
|
document.getElementById("audioSource").play();
|
}, 2000);
|
setTimeout(function(){
|
closeVideoPop(followvideo[3].id);
|
var prealarmdata = getVideoAndShow(followvideo[0].id);
|
var poi = prealarmdata.camPosition.split(",");
|
var tmppoi = new Cesium.Cartesian3.fromDegrees(Number(poi[0]),Number(poi[1]),Number(poi[2]));
|
getKeypeopleByCardId(followvideo[0].alarmKPId,prealarmdata,followvideo[0]);
|
addAlarmPin(tmppoi,followvideo[0].alarmTime);
|
flyToLocation([Number(poi[0]),Number(poi[1]),Number(poi[2])+400]);
|
document.getElementById("audioSource").play();
|
}, 16000);
|
setTimeout(function(){
|
closeVideoPop(followvideo[0].id);
|
var prealarmdata = getVideoAndShow(followvideo[2].id);
|
var poi = prealarmdata.camPosition.split(",");
|
var tmppoi = new Cesium.Cartesian3.fromDegrees(Number(poi[0]),Number(poi[1]),Number(poi[2]));
|
getKeypeopleByCardId(followvideo[2].alarmKPId,prealarmdata,followvideo[2]);
|
addAlarmPin(tmppoi,followvideo[2].alarmTime);
|
flyToLocation([Number(poi[0]),Number(poi[1]),Number(poi[2])+400]);
|
document.getElementById("audioSource").play();
|
}, 30000);
|
}
|
//添加智能识别报警图标
|
var prealarmpin;
|
function addAlarmPin(poi, alarmtime) {
|
if(prealarmpin){
|
viewer.entities.remove(prealarmpin);
|
}
|
var alarmtimearr = alarmtime.split(' ');
|
var alarmtimen = alarmtimearr[0]+'\n'+alarmtimearr[1];
|
prealarmpin = viewer.entities.add({
|
position : poi,
|
billboard : {
|
image : '../images/pinimg/06.png',
|
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 : '16px Helvetica',
|
style : Cesium.LabelStyle.FILL_AND_OUTLINE,
|
fillColor : Cesium.Color.WHITE,
|
outlineColor : Cesium.Color.WHITE,
|
text : alarmtimen,
|
pixelOffset : new Cesium.Cartesian2(60.0, -128.0),
|
disableDepthTestDistance : 100000000,
|
scaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
}
|
});
|
}
|
//追加人脸识别照片
|
function appendAlarmPic(kpdata,videodata,alarmdata){
|
var content = '<td class="col-face" onclick="getKeypeopleById(\''+kpdata.keyId+'\')"><div class="textshadow-n alarmadd">'
|
+videodata.camAdd+'</div><img alt="" src="'+alarmdata.alarmPic+'"><div class="textshadow-n alarmdiscrib"><div>'
|
+kpdata.name+'</div><div>'+alarmdata.alarmTime+'</div></div></td>';
|
$('#facealarmcon').append(content);
|
}
|
//停止智能识别模拟
|
function stopFaceAlarm(){
|
for (var i = 0; i < followvideo.length; i++) {
|
clearVideoOnEarth(followvideo[i].id);
|
stopVideoConvertor(followvideo[i]);
|
}
|
if(prealarmpin){
|
viewer.entities.remove(prealarmpin);
|
}
|
}
|
//追踪记录展示
|
function showFaceFollowRecord(data){
|
var faceFollowgeojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var poiArr = data[i].video.camPosition.split(",");
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(poiArr[0]),Number(poiArr[1]),Number(poiArr[2])]
|
},
|
"id": "ff" + data[i].faceId,
|
};
|
feature.properties = {
|
"title": "marker",
|
"marker-symbol": "marker",
|
"marker-color": "#180EF1"
|
};
|
faceFollowgeojson.features.push(feature);
|
}
|
var faceFollowdataSource = Cesium.GeoJsonDataSource.load(faceFollowgeojson,{"markerSize":32});
|
var dataSourcePromise = viewer.dataSources.add(faceFollowdataSource);
|
dataSourcePromise.then(function(dataSource) {
|
dataSource.clustering.enabled = true;
|
dataSource.clustering.pixelRange = 25;
|
dataSource.clustering.minimumClusterSize = 3;
|
var dataSourceEntities = dataSource.entities.values;
|
for (var i = 0; i < dataSourceEntities.length; i++) {
|
dataSourceEntities[i].billboard.image = '../images/pinimg/07.png';
|
dataSourceEntities[i].billboard.scaleByDistance = new Cesium.NearFarScalar(1000, 1, 20000, 0.2);
|
dataSourceEntities[i].billboard.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(1000, 1, 20000, 0.2);
|
}
|
var removeListener;
|
var pinBuilder = new Cesium.PinBuilder();
|
var pin50 = pinBuilder.fromText('50+', Cesium.Color.RED, 36).toDataURL();
|
var pin40 = pinBuilder.fromText('40+', Cesium.Color.ORANGE, 36).toDataURL();
|
var pin30 = pinBuilder.fromText('30+', Cesium.Color.YELLOW, 36).toDataURL();
|
var pin20 = pinBuilder.fromText('20+', Cesium.Color.GREEN, 36).toDataURL();
|
var pin10 = pinBuilder.fromText('10+', Cesium.Color.BLUE, 36).toDataURL();
|
var singleDigitPins = new Array(8);
|
for (var i = 0; i < singleDigitPins.length; ++i) {
|
singleDigitPins[i] = pinBuilder.fromText('' + (i + 2), Cesium.Color.VIOLET, 36).toDataURL();
|
}
|
function customStyle() {
|
if (Cesium.defined(removeListener)) {
|
removeListener();
|
removeListener = undefined;
|
} else {
|
removeListener = dataSource.clustering.clusterEvent.addEventListener(function(clusteredEntities, cluster) {
|
cluster.label.show = false;
|
cluster.billboard.show = true;
|
cluster.billboard.id = cluster.label.id;
|
cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;
|
if (clusteredEntities.length >= 50) {
|
cluster.billboard.image = pin50;
|
} else if (clusteredEntities.length >= 40) {
|
cluster.billboard.image = pin40;
|
} else if (clusteredEntities.length >= 30) {
|
cluster.billboard.image = pin30;
|
} else if (clusteredEntities.length >= 20) {
|
cluster.billboard.image = pin20;
|
} else if (clusteredEntities.length >= 10) {
|
cluster.billboard.image = pin10;
|
} else {
|
cluster.billboard.image = singleDigitPins[clusteredEntities.length - 2];
|
}
|
});
|
}
|
// force a re-cluster with the new styling
|
var pixelRange = dataSource.clustering.pixelRange;
|
dataSource.clustering.pixelRange = 0;
|
dataSource.clustering.pixelRange = pixelRange;
|
}
|
// start with custom style
|
customStyle();
|
addPOMListener();
|
});
|
}
|
//追踪记录清除
|
function clearFollowRecord(){
|
viewer.dataSources.removeAll();
|
}
|
//智能识别展示
|
function showFaceAlarmRecord(data){
|
var facealarmgeojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var poiArr = data[i].poi.split(",");
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(poiArr[0]),Number(poiArr[1]),Number(poiArr[2])]
|
},
|
"id": "fa" + data[i].faId,
|
};
|
feature.properties = {
|
"title": "marker",
|
"marker-symbol": "marker",
|
"marker-color": "#FF6347"
|
};
|
facealarmgeojson.features.push(feature);
|
}
|
var facealarmdataSource = Cesium.GeoJsonDataSource.load(facealarmgeojson,{"markerSize":32});
|
var dataSourcePromise = viewer.dataSources.add(facealarmdataSource);
|
dataSourcePromise.then(function(dataSource) {
|
dataSource.clustering.enabled = true;
|
dataSource.clustering.pixelRange = 25;
|
dataSource.clustering.minimumClusterSize = 3;
|
var dataSourceEntities = dataSource.entities.values;
|
for (var i = 0; i < dataSourceEntities.length; i++) {
|
dataSourceEntities[i].billboard.image = '../images/pinimg/08.png';
|
dataSourceEntities[i].billboard.scaleByDistance = new Cesium.NearFarScalar(1000, 1, 20000, 0.2);
|
dataSourceEntities[i].billboard.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(1000, 1, 20000, 0.2);
|
}
|
var removeListener;
|
var pinBuilder = new Cesium.PinBuilder();
|
var pin50 = pinBuilder.fromText('50+', Cesium.Color.RED, 36).toDataURL();
|
var pin40 = pinBuilder.fromText('40+', Cesium.Color.ORANGE, 36).toDataURL();
|
var pin30 = pinBuilder.fromText('30+', Cesium.Color.YELLOW, 36).toDataURL();
|
var pin20 = pinBuilder.fromText('20+', Cesium.Color.GREEN, 36).toDataURL();
|
var pin10 = pinBuilder.fromText('10+', Cesium.Color.BLUE, 36).toDataURL();
|
var singleDigitPins = new Array(8);
|
for (var i = 0; i < singleDigitPins.length; ++i) {
|
singleDigitPins[i] = pinBuilder.fromText('' + (i + 2), Cesium.Color.VIOLET, 36).toDataURL();
|
}
|
function customStyle() {
|
if (Cesium.defined(removeListener)) {
|
removeListener();
|
removeListener = undefined;
|
} else {
|
removeListener = dataSource.clustering.clusterEvent.addEventListener(function(clusteredEntities, cluster) {
|
cluster.label.show = false;
|
cluster.billboard.show = true;
|
cluster.billboard.id = cluster.label.id;
|
cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;
|
if (clusteredEntities.length >= 50) {
|
cluster.billboard.image = pin50;
|
} else if (clusteredEntities.length >= 40) {
|
cluster.billboard.image = pin40;
|
} else if (clusteredEntities.length >= 30) {
|
cluster.billboard.image = pin30;
|
} else if (clusteredEntities.length >= 20) {
|
cluster.billboard.image = pin20;
|
} else if (clusteredEntities.length >= 10) {
|
cluster.billboard.image = pin10;
|
} else {
|
cluster.billboard.image = singleDigitPins[clusteredEntities.length - 2];
|
}
|
});
|
}
|
// force a re-cluster with the new styling
|
var pixelRange = dataSource.clustering.pixelRange;
|
dataSource.clustering.pixelRange = 0;
|
dataSource.clustering.pixelRange = pixelRange;
|
}
|
// start with custom style
|
customStyle();
|
addPOMListener();
|
});
|
}
|
//智能识别清除
|
function clearFaceAlarmRecord(){
|
viewer.dataSources.removeAll();
|
}
|
//刷卡记录展示
|
function showCardRecord(data){
|
var cardgeojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var poiArr = data[i].poi.split(",");
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(poiArr[0]),Number(poiArr[1]),Number(poiArr[2])]
|
},
|
"id": "cd" + data[i].crId,
|
};
|
feature.properties = {
|
"title": "marker",
|
"marker-symbol": "marker",
|
"marker-color": "#2bff30"
|
};
|
cardgeojson.features.push(feature);
|
}
|
var carddataSource = Cesium.GeoJsonDataSource.load(cardgeojson,{"markerSize":32});
|
var dataSourcePromise = viewer.dataSources.add(carddataSource);
|
dataSourcePromise.then(function(dataSource) {
|
dataSource.clustering.enabled = true;
|
dataSource.clustering.pixelRange = 25;
|
dataSource.clustering.minimumClusterSize = 3;
|
var dataSourceEntities = dataSource.entities.values;
|
for (var i = 0; i < dataSourceEntities.length; i++) {
|
dataSourceEntities[i].billboard.image = '../images/pinimg/09.png';
|
dataSourceEntities[i].billboard.scaleByDistance = new Cesium.NearFarScalar(1000, 1, 20000, 0.2);
|
dataSourceEntities[i].billboard.pixelOffsetScaleByDistance = new Cesium.NearFarScalar(1000, 1, 20000, 0.2);
|
}
|
var removeListener;
|
var pinBuilder = new Cesium.PinBuilder();
|
var pin50 = pinBuilder.fromText('50+', Cesium.Color.RED, 36).toDataURL();
|
var pin40 = pinBuilder.fromText('40+', Cesium.Color.ORANGE, 36).toDataURL();
|
var pin30 = pinBuilder.fromText('30+', Cesium.Color.YELLOW, 36).toDataURL();
|
var pin20 = pinBuilder.fromText('20+', Cesium.Color.GREEN, 36).toDataURL();
|
var pin10 = pinBuilder.fromText('10+', Cesium.Color.BLUE, 36).toDataURL();
|
var singleDigitPins = new Array(8);
|
for (var i = 0; i < singleDigitPins.length; ++i) {
|
singleDigitPins[i] = pinBuilder.fromText('' + (i + 2), Cesium.Color.VIOLET, 36).toDataURL();
|
}
|
function customStyle() {
|
if (Cesium.defined(removeListener)) {
|
removeListener();
|
removeListener = undefined;
|
} else {
|
removeListener = dataSource.clustering.clusterEvent.addEventListener(function(clusteredEntities, cluster) {
|
cluster.label.show = false;
|
cluster.billboard.show = true;
|
cluster.billboard.id = cluster.label.id;
|
cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;
|
if (clusteredEntities.length >= 50) {
|
cluster.billboard.image = pin50;
|
} else if (clusteredEntities.length >= 40) {
|
cluster.billboard.image = pin40;
|
} else if (clusteredEntities.length >= 30) {
|
cluster.billboard.image = pin30;
|
} else if (clusteredEntities.length >= 20) {
|
cluster.billboard.image = pin20;
|
} else if (clusteredEntities.length >= 10) {
|
cluster.billboard.image = pin10;
|
} else {
|
cluster.billboard.image = singleDigitPins[clusteredEntities.length - 2];
|
}
|
});
|
}
|
// force a re-cluster with the new styling
|
var pixelRange = dataSource.clustering.pixelRange;
|
dataSource.clustering.pixelRange = 0;
|
dataSource.clustering.pixelRange = pixelRange;
|
}
|
// start with custom style
|
customStyle();
|
addPOMListener();
|
});
|
}
|
//刷卡记录清除
|
function clearCardRecord(){
|
viewer.dataSources.removeAll();
|
}
|