document.write('<script src="../js/oneMap_service.js"></script>');
|
|
/*
|
*一张图 3D地图实现
|
*包括重点人口信息管理、流动人口信息管理、实有房屋信息管理、
|
*实有重点单位信息管理、消防列管信息管理、治安卡口信息管理
|
*行业场所信息管理、警用网格信息管理、应急物资信息管理
|
**/
|
var kp_overlays3D;//重点人口信息点存储
|
var kp2_overlays3D = [];//椭球
|
var fp_overlays3D;//流动人口信息点存储
|
var fp2_overlays3D = [];//椭球
|
var hp_overlays3D;//实有房屋信息点存储
|
var hp2_overlays3D = [];//实有房屋信息点存储
|
var kd_overlays3D;//重点单位信息点存储
|
var ss_overlays3D;//治安卡口信息点存储
|
var fc_overlays3D;//消防列管信息点存储
|
var bp_overlays3D;//行业场所信息点存储
|
var bp2_overlays3D = [];//行业场所信息点存储
|
var pn_overlays3D = [];//警用网格信息点存储
|
var es_overlays3D;//应急物资信息点存储
|
var query_overlays3D;// 用于存储条件查询结果标签
|
var query2_overlays3D = [];// 用于存储重点人口、流动人口、房屋的贴窗椭球
|
//一张图根据摄像机高度更改图标和位置球显隐的操作监听句柄
|
function cameraChanges() {
|
var removeChanged = viewer.camera.changed.addEventListener(function(percentage) {
|
var cameraHeight = Math.ceil(viewer.camera.positionCartographic.height);
|
if (cameraHeight>240){
|
for(var i = 0; i < kp2_overlays3D.length; i++){
|
kp2_overlays3D[i].show = false;
|
}
|
for(var i = 0; i < fp2_overlays3D.length; i++){
|
fp2_overlays3D[i].show = false;
|
}
|
for(var i = 0; i < hp2_overlays3D.length; i++){
|
hp2_overlays3D[i].show = false;
|
}
|
for(var i = 0; i < bp2_overlays3D.length; i++){
|
bp2_overlays3D[i].show = false;
|
}
|
for(var i = 0; i < query2_overlays3D.length; i++){
|
query2_overlays3D[i].show = false;
|
}
|
}else{
|
for(var i = 0; i < kp2_overlays3D.length; i++){
|
kp2_overlays3D[i].show = true;
|
}
|
for(var i = 0; i < fp2_overlays3D.length; i++){
|
fp2_overlays3D[i].show = true;
|
}
|
for(var i = 0; i < hp2_overlays3D.length; i++){
|
hp2_overlays3D[i].show = true;
|
}
|
for(var i = 0; i < bp2_overlays3D.length; i++){
|
bp2_overlays3D[i].show = true;
|
}
|
for(var i = 0; i < query2_overlays3D.length; i++){
|
query2_overlays3D[i].show = true;
|
}
|
}
|
});
|
}
|
//创建聚合展点方法
|
function createClusterPin(geojson,key){
|
var promise = Cesium.GeoJsonDataSource.load(geojson,{"markerSize":30});
|
var dataSourcePromise = viewer.dataSources.add(promise);
|
dataSourcePromise.then(function(dataSource) {
|
var imgurl = '';
|
switch (key) {
|
case "kp":
|
kp_overlays3D = dataSource;
|
imgurl = '../images/pinimg/20.png'; break;
|
case "fp":
|
fp_overlays3D = dataSource;
|
imgurl = '../images/pinimg/21.png'; break;
|
case "hp":
|
hp_overlays3D = dataSource;
|
imgurl = '../images/pinimg/22.png';
|
break;
|
case "kd":
|
kd_overlays3D = dataSource;
|
imgurl = '../images/pinimg/23.png';
|
break;
|
case "ss":
|
ss_overlays3D = dataSource;
|
imgurl = '../images/pinimg/25.png';
|
break;
|
case "fc":
|
fc_overlays3D = dataSource;
|
imgurl = '../images/pinimg/24.png';
|
break;
|
case "es":
|
es_overlays3D = dataSource;
|
imgurl = '../images/pinimg/27.png';
|
break;
|
case "bp":
|
bp_overlays3D = dataSource;
|
imgurl = '../images/pinimg/26.png'; break;
|
case "query":
|
query_overlays3D = dataSource;
|
imgurl = '../images/pinimg/29.png';
|
break;
|
case "cs":
|
case_overlays3D = dataSource;
|
break;
|
}
|
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++) {
|
if(key=='cs'){
|
var case_source = dataSourceEntities[i].properties.case_source._value;
|
switch (case_source) {
|
case '110':
|
dataSourceEntities[i].billboard.image = '../images/pinimg/19.png';
|
break;
|
case '119':
|
dataSourceEntities[i].billboard.image = '../images/pinimg/18.png';
|
break;
|
case '122':
|
dataSourceEntities[i].billboard.image = '../images/pinimg/17.png';
|
break;
|
default:
|
dataSourceEntities[i].billboard.image = '../images/pinimg/19.png';
|
break;
|
}
|
}else{
|
dataSourceEntities[i].billboard.image = imgurl;
|
}
|
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();
|
});
|
}
|
//创建近景球
|
function createNearEllipsoid(id,name,pos,color,arr){
|
var cameraHeight = Math.ceil(viewer.camera.positionCartographic.height);
|
var isEllipsoidShow = false;
|
if (cameraHeight<200)isEllipsoidShow = true;
|
arr.push(viewer.entities.add({
|
name : name,
|
id : id,
|
show : isEllipsoidShow,
|
position : pos,
|
ellipsoid : {
|
radii : new Cesium.Cartesian3(0.5, 0.5, 0.5),
|
material : color
|
}
|
}));
|
}
|
//清除条件查询结果
|
function clearOnemapQueryResult(){
|
viewer.dataSources.remove(query_overlays3D);
|
for (var i = 0; i < query2_overlays3D.length; i++) {
|
viewer.entities.remove(query2_overlays3D[i]);
|
}
|
query2_overlays3D = [];
|
}
|
//所有重点人口信息三维展示
|
function showKeypeople_3D(data) {
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var position = data[i].poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "kp" + data[i].key_id,
|
"name": '实有重点人口',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "pitch",
|
"marker-color": "#8A2BE2"
|
}
|
};
|
geojson.features.push(feature);
|
var nearEllipsoidId = 'ke' + data[i].key_id;
|
var pos = Cesium.Cartesian3.fromDegrees(Number(position[0]), Number(position[1]),Number(position[2]));
|
var color = Cesium.Color.BLUEVIOLET.withAlpha(0.7);
|
createNearEllipsoid(nearEllipsoidId,'实有重点人口',pos,color,kp2_overlays3D);
|
}
|
createClusterPin(geojson,"kp");
|
}
|
function closeKeypeople_3D(){
|
for (var i = 0; i < kp2_overlays3D.length; i++) {
|
viewer.entities.remove(kp2_overlays3D[i]); // 将标注从场景移除
|
}
|
kp2_overlays3D.length = 0;
|
viewer.dataSources.remove(kp_overlays3D);
|
stopPeopleRoute3D();
|
}
|
// 关键字搜索——重点人口信息管理
|
function showQueryKeypeople_3D(data) {
|
$("input[value='keypeopleInfo']").removeAttr("checked"); // 取消选中
|
closeKeypeople_3D();
|
clearOnemapQueryResult();
|
var content = '<div class="col-md-12 layerul">'
|
+ '<label class="col-md-12 mycol searchmenutitle">重点人口查询结果</label>'
|
+ '<i onclick="closesearchresult()" '
|
+ 'class="fa myfa fa-remove pull-right myfa-search-close"></i>'
|
+ '<div class="col-md-12 mycol searchresultcon">';
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
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
|
+ '" data-name ="'
|
+ position
|
+ '" data-type = "kp" onclick="moveandshow_3D(this,\''
|
+ data[i].address.camPoi + '\',\''
|
+ data[i].address.camHeading + '\',\''
|
+ data[i].address.camPitch + '\''
|
+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += '"><i class="col-md-1 mycol fa myfa fa-map-marker" ></i>'
|
+ '<label class="col-md-5 mycol">' + data[i].name
|
+ '</label>' + '<label class="col-md-6 mycol">'
|
+ data[i].type + '</label>'
|
+ '<label class="col-md-12 mycol">' + data[i].address.addName
|
+ '</label></div>';
|
}
|
content += '</div></div>';
|
$('#searchresult').html(content);
|
createClusterPin(geojson,"query");
|
}
|
// 流动人口信息管理
|
// 所有流动人口信息展示
|
function showFlowpeople_3D(data) {
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var position = data[i].poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "fp" + data[i].flow_id,
|
"name": '实有流动人口',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "school",
|
"marker-color": "#7FFFD4"
|
}
|
};
|
geojson.features.push(feature);
|
var nearEllipsoidId = 'fe' + data[i].flow_id;
|
var pos = Cesium.Cartesian3.fromDegrees(Number(position[0]), Number(position[1]),Number(position[2]));
|
var color = Cesium.Color.AQUAMARINE.withAlpha(0.7);
|
createNearEllipsoid(nearEllipsoidId,'实有流动人口',pos,color,fp2_overlays3D);
|
}
|
createClusterPin(geojson,"fp");
|
}
|
function closeFlowpeople_3D(){
|
for (var i = 0; i < fp2_overlays3D.length; i++) {
|
viewer.entities.remove(fp2_overlays3D[i]); // 将标注从场景移除
|
}
|
fp2_overlays3D.length = 0;
|
viewer.dataSources.remove(fp_overlays3D);
|
stopPeopleRoute3D();
|
}
|
// 关键字搜索——流动人口信息管理
|
function showQueryFlowpeople_3D(data) {
|
$("input[value='flowpeopleInfo']").removeAttr("checked"); // 取消选中
|
closeFlowpeople_3D();
|
clearOnemapQueryResult();
|
var content = '<div class="col-md-12 layerul">'
|
+ '<label class="col-md-12 mycol searchmenutitle">流动人口查询结果</label>'
|
+ '<i onclick="closesearchresult()" '
|
+ 'class="fa myfa fa-remove pull-right myfa-search-close"></i>'
|
+ '<div class="col-md-12 mycol searchresultcon">';
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for ( var i = 0; i < data.length; i++) {
|
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": "fp" + data[i].flowId,
|
"name": '查询结果',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "marker-stroked",
|
"marker-color": "#FFD700"
|
}
|
};
|
geojson.features.push(feature);
|
var nearEllipsoidId = 'fe' + data[i].flowId;
|
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].flowId
|
+ '" data-name ="'
|
+ position
|
+ '" data-type = "fp" onclick="moveandshow_3D(this,\''
|
+ data[i].address.camPoi + '\',\''
|
+ data[i].address.camHeading + '\',\''
|
+ data[i].address.camPitch + '\''
|
+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += ' ><i class="col-md-1 mycol fa myfa fa-map-marker" ></i>'
|
+ '<label class="col-md-5 mycol">' + data[i].name
|
+ '</label>' + '<label class="col-md-6 mycol">'
|
+ data[i].type + '</label>'
|
+ '<label class="col-md-12 mycol">' + data[i].address.addName
|
+ '</label></div>';
|
}
|
content += '</div></div>';
|
$('#searchresult').html(content);
|
createClusterPin(geojson,"query");
|
}
|
// 实有房屋管理
|
// 所有房屋信息展示
|
function showHouse_3D(data) {
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var position = data[i].poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "hp" + data[i].house_id,
|
"name": '实有房屋',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "building",
|
"marker-color": "#228B22"
|
}
|
};
|
geojson.features.push(feature);
|
var nearEllipsoidId = 'he' + data[i].house_id;
|
var pos = Cesium.Cartesian3.fromDegrees(Number(position[0]), Number(position[1]),Number(position[2]));
|
var color = Cesium.Color.FORESTGREEN.withAlpha(0.7);
|
createNearEllipsoid(nearEllipsoidId,'实有房屋',pos,color,hp2_overlays3D);
|
}
|
createClusterPin(geojson,"hp");
|
}
|
function closeHouse_3D(){
|
for (var i = 0; i < hp2_overlays3D.length; i++) {
|
viewer.entities.remove(hp2_overlays3D[i]);
|
}
|
hp2_overlays3D.length = 0;
|
viewer.dataSources.remove(hp_overlays3D);
|
}
|
//条件查询实有房屋信息 data:后台返回的查询结果
|
function showQueryHouse_3D(data) {
|
$("input[value='houseInfo']").removeAttr("checked"); // 取消选中
|
closeHouse_3D();
|
clearOnemapQueryResult();
|
var content = '<div class="col-md-12 layerul">'
|
+ '<label class="col-md-12 mycol searchmenutitle">实有房屋查询结果</label>'
|
+ '<i onclick="closesearchresult()" '
|
+ 'class="fa myfa fa-remove pull-right myfa-search-close"></i>'
|
+ '<div class="col-md-12 mycol searchresultcon">';
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for ( var i = 0; i < data.length; i++) {
|
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": "hp" + data[i].houseId,
|
"name": '查询结果',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "marker-stroked",
|
"marker-color": "#FFD700"
|
}
|
};
|
geojson.features.push(feature);
|
var nearEllipsoidId = 'he' + data[i].houseId;
|
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].houseId
|
+ '" data-name ="'
|
+ position
|
+ '" data-type = "hp" onclick="moveandshow_3D(this,\''
|
+ data[i].address.camPoi + '\',\''
|
+ data[i].address.camHeading + '\',\''
|
+ data[i].address.camPitch + '\''
|
+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += ' ><i class="col-md-1 mycol fa myfa fa-map-marker" ></i>'
|
+ '<label class="col-md-5 mycol">' + data[i].owner
|
+ '</label>' + '<label class="col-md-6 mycol">'
|
+ data[i].area + '平方米</label>'
|
+ '<label class="col-md-12 mycol">'
|
+ data[i].address.addName + '</label></div>';
|
}
|
content += '</div></div>';
|
$('#searchresult').html(content);
|
createClusterPin(geojson,"query");
|
}
|
// 实有重点单位管理
|
// 展示所有重点单位信息
|
function showKeyDepartment_3D(data) {
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var position = data[i].poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "kd" + data[i].key_dep_id,
|
"name": '实有重点单位',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "town-hall",
|
"marker-color": "#20B2AA"
|
}
|
};
|
geojson.features.push(feature);
|
}
|
createClusterPin(geojson,"kd");
|
}
|
function closeKeyDepartment_3D(){
|
viewer.dataSources.remove(kd_overlays3D);
|
}
|
/*
|
* 条件查询重点单位信息 data:后台返回查询结果
|
*/
|
function showQueryKeyDepartment_3D(data) {
|
$("input[value='keyDepartment']").removeAttr("checked"); // 取消选中
|
closeKeyDepartment_3D();
|
clearOnemapQueryResult();
|
var content = '<div class="col-md-12 layerul">'
|
+ '<label class="col-md-12 mycol searchmenutitle">实有重点单位查询结果</label>'
|
+ '<i onclick="closesearchresult()" '
|
+ 'class="fa myfa fa-remove pull-right myfa-search-close"></i>'
|
+ '<div class="col-md-12 mycol searchresultcon">';
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for ( var i = 0; i < data.length; i++) {
|
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": "kd" + data[i].keyDepId,
|
"name": '查询结果',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "marker-stroked",
|
"marker-color": "#FFD700"
|
}
|
};
|
geojson.features.push(feature);
|
content += '<div id="'
|
+ data[i].keyDepId
|
+ '" data-name ="'
|
+ position
|
+ '" data-type = "kd" onclick="moveandshow_3D(this,\''
|
+ data[i].address.camPoi + '\',\''
|
+ data[i].address.camHeading + '\',\''
|
+ data[i].address.camPitch + '\''
|
+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += ' ><i class="col-md-1 mycol fa myfa fa-map-marker"></i>'
|
+ '<label class="col-md-6 mycol">' + data[i].keyDepName
|
+ '</label>' + '<label class="col-md-5 mycol">'
|
+ data[i].keyDepType + '</label>'
|
+ '<label class="col-md-1 mycol"></label>'
|
+ '<label class="col-md-5 mycol">'
|
+ data[i].keyDepPerson + '</label>'
|
+ '<label class="col-md-1 mycol"></label>'
|
+ '<label class="col-md-5 mycol">' + data[i].keyDepTel
|
+ '</label></div>';
|
}
|
content += '</div></div>';
|
$('#searchresult').html(content);
|
createClusterPin(geojson,"query");
|
}
|
// 消防列管单位管理
|
// 展示所有消防列管单位
|
function showFireControlUnit_3D(data) {
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var position = data[i].poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "fc" + data[i].fire_ctl_id,
|
"name": '消防列管',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "fire-station",
|
"marker-color": "#FF4500"
|
}
|
};
|
geojson.features.push(feature);
|
}
|
createClusterPin(geojson,"fc");
|
}
|
function closeFireControlUnit_3D(){
|
viewer.dataSources.remove(fc_overlays3D);
|
}
|
//条件查询消防列管信息 data:后台返回查询结果
|
function showQueryFireControlUnit_3D(data) {
|
$("input[value='fireControlUnit']").removeAttr("checked"); // 取消选中
|
closeFireControlUnit_3D();
|
clearOnemapQueryResult();
|
var content = '<div class="col-md-12 layerul">'
|
+ '<label class="col-md-12 mycol searchmenutitle">消防列管单位查询结果</label>'
|
+ '<i onclick="closesearchresult()" '
|
+ 'class="fa myfa fa-remove pull-right myfa-search-close"></i>'
|
+ '<div class="col-md-12 mycol searchresultcon">';
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for ( var i = 0; i < data.length; i++) {
|
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": "fc" + data[i].fireCtlId,
|
"name": '查询结果',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "marker-stroked",
|
"marker-color": "#FFD700"
|
}
|
};
|
geojson.features.push(feature);
|
content += '<div id="'
|
+ data[i].fireCtlId
|
+ '" data-name ="'
|
+ position
|
+ '" data-type = "fc" onclick="moveandshow_3D(this,\''
|
+ data[i].address.camPoi + '\',\''
|
+ data[i].address.camHeading + '\',\''
|
+ data[i].address.camPitch + '\''
|
+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += ' ><i class="col-md-1 mycol fa myfa fa-map-marker"></i>'
|
+ '<label class="col-md-6 mycol">'
|
+ data[i].fireCtlName + '</label>'
|
+ '<label class="col-md-5 mycol">'
|
+ data[i].fireCtlLevel + '</label>'
|
+ '<label class="col-md-1 mycol"></label>'
|
+ '<label class="col-md-5 mycol">'
|
+ data[i].fireCtlPerson + '</label>'
|
+ '<label class="col-md-1 mycol"></label>'
|
+ '<label class="col-md-5 mycol">'
|
+ data[i].fireCtlTel + '</label></div>';
|
}
|
content += '</div></div>';
|
$('#searchresult').html(content);
|
createClusterPin(geojson,"query");
|
}
|
// 治安卡口管理
|
// 展示所有的治安卡口信息
|
function showSaveStation_3D(data) {
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var position = data[i].poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "ss" + data[i].security_id,
|
"name": '治安卡口',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "prison",
|
"marker-color": "#00FF00"
|
}
|
};
|
geojson.features.push(feature);
|
}
|
createClusterPin(geojson,"ss");
|
}
|
function closeSaveStation_3D(){
|
viewer.dataSources.remove(ss_overlays3D);
|
}
|
//条件查询治安卡口信息 data:后台返回查询结果
|
function showQuerySaveStation_3D(data) {
|
$("input[value='saveStation']").removeAttr("checked"); // 取消选中
|
closeSaveStation_3D();
|
clearOnemapQueryResult();
|
var content = '<div class="col-md-12 layerul">'
|
+ '<label class="col-md-12 mycol searchmenutitle">治安卡口查询结果</label>'
|
+ '<i onclick="closesearchresult()" '
|
+ 'class="fa myfa fa-remove pull-right myfa-search-close"></i>'
|
+ '<div class="col-md-12 mycol searchresultcon">';
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for ( var i = 0; i < data.length; i++) {
|
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": "ss" + data[i].securityId,
|
"name": '查询结果',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "marker-stroked",
|
"marker-color": "#FFD700"
|
}
|
};
|
geojson.features.push(feature);
|
content += '<div id="'
|
+ data[i].securityId
|
+ '" data-name ="'
|
+ position
|
+ '" data-type = "ss" onclick="moveandshow_3D(this,\''
|
+ data[i].address.camPoi + '\',\''
|
+ data[i].address.camHeading + '\',\''
|
+ data[i].address.camPitch + '\''
|
+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += ' ><i class="col-md-1 mycol fa myfa fa-map-marker"></i>'
|
+ '<label class="col-md-7 mycol">'
|
+ data[i].securityName + '</label>'
|
+ '<label class="col-md-4 mycol">'
|
+ data[i].securityType + '</label>'
|
+ '<label class="col-md-1 mycol"></label>'
|
+ '<label class="col-md-5 mycol">'
|
+ data[i].securityPerson + '</label>'
|
+ '<label class="col-md-1 mycol"></label>'
|
+ '<label class="col-md-5 mycol">'
|
+ data[i].securityTel + '</label></div>';
|
}
|
content += '</div></div>';
|
$('#searchresult').html(content);
|
createClusterPin(geojson,"query");
|
}
|
// 行业场所管理
|
// 展示所有行业场所
|
function showBusinessPlace_3D(data) {
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var position = data[i].poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "bp" + data[i].business_id,
|
"name": '行业场所',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "bar",
|
"marker-color": "#00FFFF"
|
}
|
};
|
geojson.features.push(feature);
|
var nearEllipsoidId = 'be' + data[i].business_id;
|
var pos = Cesium.Cartesian3.fromDegrees(Number(position[0]), Number(position[1]),Number(position[2]));
|
var color = Cesium.Color.AQUA.withAlpha(0.7);
|
createNearEllipsoid(nearEllipsoidId,'行业场所',pos,color,bp2_overlays3D);
|
}
|
createClusterPin(geojson,"bp");
|
}
|
function closeBusinessPlace_3D(){
|
for ( var i = 0; i < bp2_overlays3D.length; i++) {
|
viewer.entities.remove(bp2_overlays3D[i]); // 将标注从场景移除
|
}
|
bp2_overlays3D.length = 0;
|
viewer.dataSources.remove(bp_overlays3D);
|
}
|
//条件查询行业场所信息 data:后台返回查询结果
|
function showQueryBusinessPlace_3D(data) {
|
$("input[value='businessPlace']").removeAttr("checked"); // 取消选中
|
closeBusinessPlace_3D();
|
clearOnemapQueryResult();
|
var content = '<div class="col-md-12 layerul">'
|
+ '<label class="col-md-12 mycol searchmenutitle">行业场所查询结果</label>'
|
+ '<i onclick="closesearchresult()" '
|
+ 'class="fa myfa fa-remove pull-right myfa-search-close"></i>'
|
+ '<div class="col-md-12 mycol searchresultcon">';
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for ( var i = 0; i < data.length; i++) {
|
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": "bp" + data[i].businessId,
|
"name": '查询结果',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "marker-stroked",
|
"marker-color": "#FFD700"
|
}
|
};
|
geojson.features.push(feature);
|
var nearEllipsoidId = 'be' + data[i].businessId;
|
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].businessId
|
+ '" data-name ="'
|
+ position
|
+ '" data-type = "bp" onclick="moveandshow_3D(this,\''
|
+ data[i].address.camPoi + '\',\''
|
+ data[i].address.camHeading + '\',\''
|
+ data[i].address.camPitch + '\''
|
+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += ' ><i class="col-md-1 mycol fa myfa fa-map-marker"></i>'
|
+ '<label class="col-md-7 mycol">'
|
+ data[i].businessName + '</label>'
|
+ '<label class="col-md-4 mycol">'
|
+ data[i].businessType + '</label>'
|
+ '<label class="col-md-1 mycol"></label>'
|
+ '<label class="col-md-5 mycol">'
|
+ data[i].businessPerson + '</label>'
|
+ '<label class="col-md-1 mycol"></label>'
|
+ '<label class="col-md-5 mycol">'
|
+ data[i].businessTel + '</label></div>'
|
}
|
content += '</div></div>';
|
$('#searchresult').html(content);
|
createClusterPin(geojson,"query");
|
}
|
// 警用网格管理
|
// 展示所有的警用网格
|
function showPoliceNet_3D(data) {
|
$.each(data, function(index) {
|
var polygonArrtmp = stringToNumber(this.netPolygen);
|
var polygonArr = [];
|
for ( var i = 0; i < polygonArrtmp.length; i++) {
|
if((i+1)%3 != 0){
|
polygonArr.push(polygonArrtmp[i]);
|
}
|
}
|
var pacolor = new Cesium.Color.fromCssColorString(this.netColor);
|
var tmpGeometryInstance = new Cesium.GeometryInstance({
|
id : "pn" + this.netId,
|
geometry : new Cesium.PolygonGeometry({
|
polygonHierarchy : new Cesium.PolygonHierarchy(
|
Cesium.Cartesian3.fromDegreesArray(polygonArr)),
|
extrudedHeight : 5000
|
}),
|
attributes : {
|
color : Cesium.ColorGeometryInstanceAttribute.fromColor(pacolor.withAlpha(0.6))
|
}
|
});
|
var tmpClassificationPrimitive = new Cesium.ClassificationPrimitive({
|
geometryInstances : tmpGeometryInstance
|
});
|
viewer.scene.primitives.add(tmpClassificationPrimitive);
|
pn_overlays3D.push(tmpClassificationPrimitive);
|
});
|
}
|
function closePoliceNet_3D(){
|
for ( var i = 0; i < pn_overlays3D.length; i++) {
|
viewer.scene.primitives.remove(pn_overlays3D[i]);
|
}
|
pn_overlays3D.length = 0;
|
}
|
// 应急物资仓库管理
|
// 展示所有的应急物资
|
function showEmergencySupplies_3D(data) {
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for (var i = 0; i < data.length; i++) {
|
var position = data[i].poi.split(',');
|
var feature = {
|
"type": "Feature",
|
"geometry": {
|
"type": "Point",
|
"coordinates": [Number(position[0]),Number(position[1]),Number(position[2])]
|
},
|
"id": "es" + data[i].store_id,
|
"name": '应急物资',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "embassy",
|
"marker-color": "#ADFF2F"
|
}
|
};
|
geojson.features.push(feature);
|
}
|
createClusterPin(geojson,"es");
|
}
|
function closeEmergencySupplies_3D(){
|
viewer.dataSources.remove(es_overlays3D);
|
}
|
//条件查询应急物资信息 data:后台返回查询结果
|
function showQueryEmergencySupplies_3D(data) {
|
$("input[value='emergencySupplies']").removeAttr("checked"); // 取消选中
|
closeEmergencySupplies_3D();
|
clearOnemapQueryResult();
|
var content = '<div class="col-md-12 layerul">'
|
+ '<label class="col-md-12 mycol searchmenutitle">应急物资仓库查询结果</label>'
|
+ '<i onclick="closesearchresult()" '
|
+ 'class="fa myfa fa-remove pull-right myfa-search-close"></i>'
|
+ '<div class="col-md-12 mycol searchresultcon">';
|
var geojson = {
|
"type": "FeatureCollection",
|
"features": []
|
};
|
for ( var i = 0; i < data.length; i++) {
|
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": "es" + data[i].storeId,
|
"name": '查询结果',
|
"properties": {
|
"title": "marker",
|
"marker-symbol": "marker-stroked",
|
"marker-color": "#FFD700"
|
}
|
};
|
geojson.features.push(feature);
|
content += '<div id="'
|
+ data[i].storeId
|
+ '"data-name ="'
|
+ position
|
+ '" data-type = "es" onclick="moveandshow_3D(this,\''
|
+ data[i].address.camPoi + '\',\''
|
+ data[i].address.camHeading + '\',\''
|
+ data[i].address.camPitch + '\''
|
+')" class="row ';
|
(i % 2 == 0) ? content += 'sr-row-up' : content += 'sr-row-up-black';
|
content += ' ><i class="col-md-1 mycol fa myfa fa-map-marker"></i>'
|
+ '<label class="col-md-11 mycol">'
|
+ data[i].type + '</label>'
|
+ '<label class="col-md-12 mycol">'
|
+ data[i].address.addName + '</label></div>';
|
}
|
content += '</div></div>';
|
$('#searchresult').html(content);
|
createClusterPin(geojson,"query");
|
}
|
/*
|
* 根据传入的参数,定位到查询的点 type:数据类型,分别为 kp-重点人口 fp-流动人口 hp-实有房屋 kd-实有重点单位 fc-消防列管
|
* ss-治安卡口 bp-行业场所 pn-警用网格 es-应急物资 id:该点的ID position:该点的坐标
|
*/
|
function moveandshow_3D(e,camPoi,camHeading,camPitch) {
|
var type = e.getAttribute("data-type");
|
var id = e.getAttribute("id");
|
var position = e.getAttribute("data-name");
|
var arrposition = position.split(',');
|
var annotations = viewer.scene.primitives.add(new Cesium.LabelCollection());
|
annotations.add({
|
position : Cesium.Cartesian3.fromDegrees(
|
Number(position[0]),
|
Number(position[1]),
|
Number(position[2])),
|
text : '结果',
|
showBackground : true,
|
font : '14px monospace',
|
horizontalOrigin : Cesium.HorizontalOrigin.LEFT,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
disableDepthTestDistance : Number.POSITIVE_INFINITY
|
});
|
switch (type) {
|
case 'kp':
|
getKeypeopleById(id);
|
break;
|
case 'fp':
|
getFlowpeopleById(id);
|
break;
|
case 'hp':
|
getHouseById(id);
|
break;
|
case 'kd':
|
getKeyDepartmentById(id);
|
break;
|
case 'fc':
|
getFireControlById(id);
|
break;
|
case 'ss':
|
getSecuritySById(id);
|
break;
|
case 'bp':
|
getBusinessById(id);
|
break;
|
case 'pn':
|
getPoliceNetById(id);
|
break;
|
case 'es':
|
getEmergencySupplyById(id);
|
break;
|
case 'poi':
|
getPOIDetailById(id);
|
break;
|
case 'cs'://案件
|
getCaseById_3D(id);
|
break;
|
default:
|
break;
|
}
|
if(camPoi==undefined||camHeading==undefined||camPitch==undefined){
|
viewer.camera.flyTo({
|
destination : Cesium.Cartesian3.fromDegrees(Number(arrposition[0]),
|
Number(arrposition[1]), Number(arrposition[2])+1000),
|
});
|
}else{
|
var camPoiArr = camPoi.split(',');
|
viewer.camera.setView({
|
destination : Cesium.Cartesian3.fromElements(Number(camPoiArr[0]), Number(camPoiArr[1]), Number(camPoiArr[2])),
|
orientation: {
|
heading : Number(camHeading), // east, default value is 0.0 (north)
|
pitch : Number(camPitch), // default value (looking down)
|
roll : 0.0 // default value
|
}
|
});
|
}
|
}
|
|
/*
|
* 巡逻大队业务图层
|
*/
|
var pa_overlays3D = [];
|
var paLable_overlays3D = [];
|
//显示巡逻区信息
|
function showPatrolArea_3D(data){
|
var xqColor = [Cesium.Color.RED, Cesium.Color.RED, Cesium.Color.ORANGE,
|
Cesium.Color.ORANGE, Cesium.Color.BLUE, Cesium.Color.BLUE,
|
Cesium.Color.BLUE, Cesium.Color.GREEN, Cesium.Color.GREEN];
|
$.each(data, function(index,value) {
|
var tmpPolygon = stringToNumber(this.netPolygen);
|
var polygonArr = [];
|
for ( var i = 0; i < tmpPolygon.length; i++) {
|
if((i+1)%3 != 0){
|
polygonArr.push(tmpPolygon[i]);
|
}
|
}
|
var pacolor = new Cesium.Color.fromCssColorString(this.netColor);
|
var tmpGeometryInstance = new Cesium.GeometryInstance({
|
id : "pa" + this.netId,
|
geometry : new Cesium.PolygonGeometry({
|
polygonHierarchy : new Cesium.PolygonHierarchy(
|
Cesium.Cartesian3.fromDegreesArray(polygonArr)),
|
extrudedHeight : 5000
|
}),
|
attributes : {
|
color : Cesium.ColorGeometryInstanceAttribute.fromColor(
|
pacolor.withAlpha(0.6))
|
}
|
});
|
var tmpClassificationPrimitive = new Cesium.ClassificationPrimitive({
|
geometryInstances : tmpGeometryInstance
|
});
|
viewer.scene.primitives.add(tmpClassificationPrimitive);
|
pa_overlays3D.push(tmpClassificationPrimitive);
|
|
var center = this.netCenter.split(",");
|
|
var point = Cesium.Cartesian3.fromDegrees(
|
Number(center[0]),Number(center[1]),Number(center[2]));
|
var mylable = viewer.entities.add({
|
position : point,
|
label : {
|
showBackground : true,
|
backgroundColor: xqColor[index],
|
text : this.netName,
|
font: '20px STHupo',
|
fillColor : Cesium.Color.WHITE
|
}
|
});
|
paLable_overlays3D.push(mylable);
|
});
|
}
|
// 关闭巡逻区信息
|
function closePatrolArea_3D(){
|
for ( var i = 0; i < paLable_overlays3D.length; i++) {
|
viewer.entities.remove(paLable_overlays3D[i]);
|
}
|
paLable_overlays3D.length = 0;
|
for ( var i = 0; i < pa_overlays3D.length; i++) {
|
viewer.scene.primitives.remove(pa_overlays3D[i]);
|
}
|
pa_overlays3D.length = 0;
|
}
|
//显示重点单位和巡逻点信息
|
var ppLable_overlays3D=[];
|
function showPatrolPoint_3D(data){
|
for (var i=0;i<data.length;i++){
|
var pointArr = data[i].pPoi.split(",");
|
var point = Cesium.Cartesian3.fromDegrees(
|
Number(pointArr[0]), Number(pointArr[1]), Number(pointArr[2]));
|
var clampedpoint = viewer.scene.clampToHeight(point);
|
var textlength = data[i].pName.length;
|
var imgurl = '';
|
var labelpixelOffset;
|
var billboardpixelOffset;
|
if(textlength<5){
|
imgurl = '../images/pinimg/28S.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/28M.png';
|
labelpixelOffset = new Cesium.Cartesian2(85.0, -135.0);
|
billboardpixelOffset = new Cesium.Cartesian2(72.0, 0.0);
|
}else{
|
imgurl = '../images/pinimg/28L.png';
|
labelpixelOffset = new Cesium.Cartesian2(122.0, -135.0);
|
billboardpixelOffset = new Cesium.Cartesian2(109.0, 0.0);
|
}
|
var ppoint = viewer.entities.add({
|
position :clampedpoint,
|
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 : data[i].pName,
|
pixelOffset : labelpixelOffset,
|
disableDepthTestDistance : 10000000,
|
scaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1000, 1, 20000, 0.2),
|
}
|
});
|
ppLable_overlays3D.push(ppoint);
|
}
|
}
|
function closePatrolPoint_3D(){
|
for ( var i = 0; i < ppLable_overlays3D.length; i++) {
|
viewer.entities.remove(ppLable_overlays3D[i]);
|
}
|
ppLable_overlays3D.length = 0;
|
}
|
|
var pl_overlays3D=[];
|
var carLineids=[];
|
//显示车巡线路
|
function showPatrolLine_3D(data) {
|
var startTime = Cesium.JulianDate.now(startTime);
|
var stopTime = Cesium.JulianDate.now(startTime);
|
for ( var i = 0; i < data.length; i++) {
|
var poiArr = stringToNumber(data[i].lPoyline);
|
var lineId = "carLine"+i;
|
carLineids.push(lineId);
|
var color = new Cesium.Color.fromCssColorString(data[i].lColor);
|
// 车辆路线轨迹;
|
var result = prepareLinesWithColor(poiArr, lineId, 'policecar1.png',
|
color, pl_overlays3D, data[i].lName);
|
if (Cesium.JulianDate.compare(startTime, result.startTime) > 0) {
|
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.LOOP_STOP;
|
viewer.clock.multiplier = 15;
|
viewer.timeline.zoomTo(startTime, stopTime);
|
}
|
//关闭车巡线路
|
function closePatrolLine_3D(){
|
for(var i=0;i<carLineids.length;i++){
|
viewer.entities.remove(viewer.entities.getById(carLineids[i]));
|
viewer.entities.remove(pl_overlays3D[i]);
|
}
|
pl_overlays3D.length=0;
|
carLineids.length=0;
|
}
|
//显示步巡线路
|
var ppl_overlays3D=[];
|
var manLineids=[];
|
function showPeoplePatrolLine_3D(data) {
|
var startTime = Cesium.JulianDate.now(startTime);
|
var stopTime = Cesium.JulianDate.now(startTime);
|
for ( var i = 0; i < data.length; i++) {
|
var poiArr = stringToNumber(data[i].lPoyline);
|
var lineId = "manLine"+i;
|
manLineids.push(lineId);
|
var color = new Cesium.Color.fromCssColorString(data[i].lColor);
|
// 步巡路线轨迹;
|
var result = prepareLinesWithColor(poiArr, lineId, 'police1.png',
|
color, ppl_overlays3D, data[i].lName);
|
if (Cesium.JulianDate.compare(startTime, result.startTime) > 0) {
|
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.LOOP_STOP;
|
viewer.clock.multiplier = 15;
|
viewer.timeline.zoomTo(startTime, stopTime);
|
}
|
//关闭步巡线路
|
function closePeoplePatrolLine_3D(){
|
for(var i=0;i<manLineids.length;i++){
|
viewer.entities.removeById(manLineids[i]);
|
viewer.entities.remove(ppl_overlays3D[i]);
|
}
|
ppl_overlays3D.length=0;
|
manLineids.length=0;
|
}
|
//绘制线路方法,可设置颜色
|
function prepareLinesWithColor(nodes,lineId,imgName,linecolor,overlays,labelName){
|
var nodes1 = nodes;
|
var nodes2 = [];
|
for(var i=0;i<nodes.length;i++){
|
if(i%3!=2){
|
nodes2.push(nodes1[i]);
|
}
|
}
|
//绘制线路的方式一:
|
var plCorridor = viewer.entities.add({
|
name : lineId,
|
corridor : {
|
positions :Cesium.Cartesian3.fromDegreesArray(nodes2),
|
width : 6,
|
material : linecolor
|
}
|
});
|
overlays.push(plCorridor);
|
|
//添加移动实体
|
var nodeLine = nodes1;
|
var nodesPosition = [];
|
var times = [];
|
var startTime = Cesium.JulianDate.now(startTime);
|
for (var i = 0; i < nodeLine.length / 3; i++) {
|
var time = new Cesium.JulianDate();
|
Cesium.JulianDate.addMinutes(startTime, i * 0.5, time);
|
times.push(time);
|
nodesPosition.push(Cesium.Cartesian3.fromDegrees(
|
nodeLine[i * 3], nodeLine[i * 3 + 1], nodeLine[i * 3 + 2] + 10));
|
}
|
var stopTime = times[times.length - 2];
|
//插值
|
var property = new Cesium.SampledPositionProperty();
|
property.addSamples(times, nodesPosition);
|
var label = new Cesium.LabelGraphics({
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : 'bold 14px Helvetica',
|
fillColor : Cesium.Color.YELLOW,
|
showBackground: true,
|
backgroundColor: Cesium.Color.BLACK.withAlpha(0.5),
|
text : labelName,
|
pixelOffset : new Cesium.Cartesian2(0.0, -9.0),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1.5e2, 3.0, 1.5e7, 0.5)
|
});
|
viewer.entities.add({
|
id : lineId,
|
position : property,
|
billboard : {
|
image : '../images/'+imgName,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
scale : 0.7
|
},
|
label : label
|
});
|
|
return {
|
startTime:startTime,
|
stopTime:stopTime
|
};
|
}
|
//一类巡区
|
var onePatrolData = [];
|
function showOnePatrolArea_3D(data){
|
var pinBuilder = new Cesium.PinBuilder();
|
for (var i=0;i<data.length;i++){
|
var pointArr = data[i].pPoi.split(",");
|
var point = Cesium.Cartesian3.fromDegrees(
|
Number(pointArr[0]), Number(pointArr[1]), Number(pointArr[2]));
|
var clampedpoint = viewer.scene.clampToHeight(point);
|
var ppoint = viewer.entities.add({
|
position :clampedpoint,
|
billboard : {
|
image : pinBuilder.fromText('一',Cesium.Color.ORANGERED,36).toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
},
|
label : {
|
show : true,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : '14px Helvetica',
|
fillColor : Cesium.Color.CHARTREUSE ,
|
style : Cesium.LabelStyle.FILL_AND_OUTLINE,
|
text : data[i].pName,
|
showBackground:true,
|
pixelOffset : new Cesium.Cartesian2(0.0, -15.0),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1.5e2, 3.0, 1.5e7, 0.5)
|
}
|
});
|
var pCircle = viewer.entities.add({
|
position: clampedpoint,
|
ellipse : {
|
semiMinorAxis : 150.0,
|
semiMajorAxis :150.0,
|
material : Cesium.Color.RED.withAlpha(0.5),
|
}
|
});
|
onePatrolData.push(ppoint);
|
onePatrolData.push(pCircle);
|
}
|
}
|
//关闭一类巡区
|
function closeOnePatrolArea_3D(){
|
for ( var i = 0; i < onePatrolData.length; i++) {
|
viewer.entities.remove(onePatrolData[i]);
|
}
|
onePatrolData.length = 0;
|
}
|
//二类巡区
|
var twoPatrolData = [];
|
function showTwoPatrolArea_3D(data){
|
var pinBuilder = new Cesium.PinBuilder();
|
for (var i=0;i<data.length;i++){
|
var pointArr = data[i].pPoi.split(",");
|
var point = Cesium.Cartesian3.fromDegrees(
|
Number(pointArr[0]), Number(pointArr[1]), Number(pointArr[2]));
|
var clampedpoint = viewer.scene.clampToHeight(point);
|
var ppoint = viewer.entities.add({
|
position :clampedpoint,
|
billboard : {
|
image : pinBuilder.fromText('二',Cesium.Color.ORANGE,36).toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
},
|
label : {
|
show : true,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : '14px Helvetica',
|
fillColor : Cesium.Color.CYAN ,
|
style : Cesium.LabelStyle.FILL_AND_OUTLINE,
|
text : data[i].pName,
|
showBackground:true,
|
pixelOffset : new Cesium.Cartesian2(0.0, -15.0),
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1.5e2, 3.0, 1.5e7, 0.5)
|
}
|
});
|
var pCircle = viewer.entities.add({
|
position: clampedpoint,
|
ellipse : {
|
semiMinorAxis : 150.0,
|
semiMajorAxis :150.0,
|
material : Cesium.Color.ORANGE.withAlpha(0.5),
|
}
|
});
|
twoPatrolData.push(ppoint);
|
twoPatrolData.push(pCircle);
|
}
|
}
|
//关闭二类巡区
|
function closeTwoPatrolArea_3D(){
|
for ( var i = 0; i < twoPatrolData.length; i++) {
|
viewer.entities.remove(twoPatrolData[i]);
|
}
|
twoPatrolData.length = 0;
|
}
|
//三类巡区
|
var threePatrolData = [];
|
function showThreePatrolArea_3D(data){
|
var pinBuilder = new Cesium.PinBuilder();
|
for (var i=0;i<data.length;i++){
|
var pointArr = data[i].pPoi.split(",");
|
var point = Cesium.Cartesian3.fromDegrees(
|
Number(pointArr[0]), Number(pointArr[1]), Number(pointArr[2]));
|
var clampedpoint = viewer.scene.clampToHeight(point);
|
var ppoint = viewer.entities.add({
|
position :clampedpoint,
|
billboard : {
|
image : pinBuilder.fromText('三',Cesium.Color.PURPLE,36).toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
},
|
label : {
|
show : true,
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
|
font : '14px Helvetica',
|
fillColor : Cesium.Color.PINK,
|
style : Cesium.LabelStyle.FILL_AND_OUTLINE,
|
text : data[i].pName,
|
pixelOffset : new Cesium.Cartesian2(0.0, -15.0),
|
showBackground:true,
|
pixelOffsetScaleByDistance : new Cesium.NearFarScalar(1.5e2, 3.0, 1.5e7, 0.5)
|
}
|
});
|
var pCircle = viewer.entities.add({
|
position: clampedpoint,
|
ellipse : {
|
semiMinorAxis : 150.0,
|
semiMajorAxis :150.0,
|
material : Cesium.Color.BLUE.withAlpha(0.5),
|
}
|
});
|
threePatrolData.push(ppoint);
|
threePatrolData.push(pCircle);
|
}
|
}
|
//关闭三类巡区
|
function closeThreePatrolArea_3D(){
|
for ( var i = 0; i < threePatrolData.length; i++) {
|
viewer.entities.remove(threePatrolData[i]);
|
}
|
threePatrolData.length = 0;
|
}
|
|
//根据线显示身份证刷卡轨迹线,留作其他功能备用
|
function showPeopleRoute3D_l(data){
|
stopPeopleRoute3D_l();
|
var traceList = stringToNumber(data[0].cardPosition);
|
var position = [traceList[0],traceList[1],2000];
|
flyToLocation(position);
|
|
var startTime = Cesium.JulianDate.now(startTime);
|
var stopTime = Cesium.JulianDate.now(startTime);
|
var result = createPeopleLines_l(traceList,data[0].routeId);
|
if(Cesium.JulianDate.compare(startTime, result.startTime)>0){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 peopleLine;
|
var people_mark;
|
var people_mark_start;
|
var people_mark_end;
|
var cardArr = [];
|
function createPeopleLines_l(nodes,lineId){
|
//添加轨迹线
|
peopleLine = 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 * 1.5, time);
|
times.push(time);
|
nodesPosition.push(Cesium.Cartesian3.fromDegrees(
|
nodes[i * 3], nodes[i * 3 + 1], nodes[i * 3 + 2] + 10));
|
}
|
var stopTime = times[times.length - 1];
|
//插值
|
var property = new Cesium.SampledPositionProperty();
|
property.addSamples(times, nodesPosition);
|
var pinBuilder = new Cesium.PinBuilder();
|
var url = Cesium.buildModuleUrl('../Cesium/Assets/Textures/maki/pitch.png');
|
Cesium.when(pinBuilder.fromUrl(url, Cesium.Color.RED , 48),function(canvas) {
|
people_mark = viewer.entities.add({
|
id :lineId,
|
position : property,
|
billboard : {
|
image : canvas.toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
scale : 1
|
}
|
});
|
});
|
//轨迹点气泡
|
CesiumPop.bindPopGlobeEventHandler(viewer);
|
for ( var i = 0; i < nodes.length; i=i+3) {
|
var content = '<div class="mapPop font2"><table cellspacing="0">'
|
+'<tr><td class="imgtd" colspan="2"><img src="../images/facealarm/facealarm1.png">'
|
+'</td><td class="imgtd">'
|
+'<div class="label-poor">报 警</div>'
|
+'<div class="label-stabilty m-t-10">识 别</div>'
|
+'</td></tr>'
|
+'<tr><td class="keytd">地点</td><td colspan="2">xxxxxxxx学校xxxxxx</td></tr>'
|
+'<tr><td class="keytd">时间</td><td colspan="2">2019-11-26 12:12:56</td></tr>'
|
+'</table></div>';
|
var options = {
|
"viewer":viewer,
|
"id":"card"+i,
|
"popupWidth":220,
|
"popupHeight":180,
|
"pos":{"lon":nodes[i],"lat":nodes[i+1],"alt":nodes[i+2]},
|
"extentHeight":100,
|
"extentColor":Cesium.Color.YELLOW,
|
"content":content
|
};
|
CesiumPop.addDivPop(options);
|
}
|
//起点
|
var startpoint = Cesium.Cartesian3.fromDegrees(nodes[0], nodes[1], nodes[2]);
|
people_mark_start = viewer.entities.add({
|
position : startpoint,
|
billboard : {
|
image : pinBuilder.fromText('起',Cesium.Color.GREEN,32).toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
}
|
});
|
//终点
|
var nodeslen = nodes.length;
|
var endpoint = Cesium.Cartesian3.fromDegrees(
|
nodes[nodeslen-3], nodes[nodeslen-2], nodes[nodeslen-1]);
|
people_mark_end = viewer.entities.add({
|
position : endpoint,
|
billboard : {
|
image : pinBuilder.fromText('终',Cesium.Color.RED,32).toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
}
|
});
|
|
return {
|
startTime:startTime,
|
stopTime:stopTime
|
}
|
}
|
//清除停止轨迹线
|
function stopPeopleRoute3D_l(){
|
viewer.entities.remove(peopleLine);
|
viewer.entities.remove(people_mark);
|
viewer.entities.remove(people_mark_start);
|
viewer.entities.remove(people_mark_end);
|
for ( var i = 0; i < cardArr.length; i++) {
|
viewer.entities.remove(cardArr[i]);
|
}
|
cardArr.length = 0;
|
CesiumPop.clearDivPop(viewer);
|
}
|
//根据识别点和身份证刷卡记录点绘制轨迹线
|
function showPeopleRoute3D(fadata,crdata){
|
stopPeopleRoute3D();
|
var data = [];
|
for (var i = 0; i < fadata.length; i++) {
|
fadata[i].time = fadata[i].faTime;
|
data.push(fadata[i]);
|
}
|
for (var i = 0; i < crdata.length; i++) {
|
crdata[i].time = crdata[i].crTime;
|
data.push(crdata[i]);
|
}
|
data.sort(function(a,b){
|
return a.time > b.time ? 1 : -1
|
});
|
var traceList = stringToNumber(data[0].poi);
|
var position = [traceList[0],traceList[1],1600];
|
flyToLocation(position);
|
|
var startTime = Cesium.JulianDate.now(startTime);
|
var stopTime = Cesium.JulianDate.now(startTime);
|
var result = createPeopleLines(data);
|
if(Cesium.JulianDate.compare(startTime, result.startTime)>0){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();
|
}
|
function createPeopleLines(nodes){
|
var lineposArr = [];
|
for (var i = 0; i < nodes.length; i++) {
|
var temppos = nodes[i].poi.split(',');
|
lineposArr.push(Number(temppos[0]),Number(temppos[1]),Number(temppos[2]));
|
}
|
//添加轨迹线
|
peopleLine = viewer.entities.add({
|
polyline : {
|
positions : Cesium.Cartesian3.fromDegreesArrayHeights(lineposArr),
|
width : 7.0,
|
material : new Cesium.PolylineGlowMaterialProperty({
|
color : Cesium.Color.GOLD,
|
glowPower : 0.3
|
}),
|
clampToGround : true,
|
classificationType : Cesium.ClassificationType.BOTH
|
}
|
});
|
//添加移动实体
|
//轨迹点气泡
|
CesiumPop.bindPopGlobeEventHandler(viewer);
|
var nodesPosition = [];
|
var times = [];
|
var startTime = Cesium.JulianDate.now(startTime);
|
for (var i = 0; i < lineposArr.length / 3; i++) {
|
var time = new Cesium.JulianDate();
|
Cesium.JulianDate.addMinutes(startTime, i * 1.5, time);
|
times.push(time);
|
nodesPosition.push(Cesium.Cartesian3.fromDegrees(
|
lineposArr[i * 3], lineposArr[i * 3 + 1], lineposArr[i * 3 + 2] + 10));
|
var content = '<div class="mapPop font2"><table cellspacing="0">';
|
if(nodes[i].faPhoto){
|
content +='<tr><td class="imgtd" colspan="2"><img src="'+nodes[i].faPhoto+'">'
|
+'</td><td class="imgtd">'
|
+'<div class="label-stabilty">报 警</div>'
|
+'<div class="label-boring">识 别</div>'
|
+'</td></tr>'
|
+'<tr><td class="keytd">地点</td><td colspan="2">'+nodes[i].faAdd+'</td></tr>'
|
+'<tr><td class="keytd">时间</td><td colspan="2">'+nodes[i].faTime+'</td></tr>'
|
+'</table></div>';
|
}else{
|
content +='<tr><td class="imgtd" colspan="2"><img src="../images/card.png">'
|
+'</td><td class="imgtd">'
|
+'<div class="label-rich">记 录</div>'
|
+'<div class="label-poor">刷 卡</div>'
|
+'</td></tr>'
|
+'<tr><td class="keytd">地点</td><td colspan="2">'+nodes[i].crAdd+'</td></tr>'
|
+'<tr><td class="keytd">时间</td><td colspan="2">'+nodes[i].crTime+'</td></tr>'
|
+'</table></div>';
|
}
|
var options = {
|
"viewer":viewer,
|
"id":"card"+i,
|
"popupWidth":220,
|
"popupHeight":200,
|
"pos":{"lon":lineposArr[i*3],"lat":lineposArr[i*3+1],"alt":lineposArr[i*3+2]},
|
"extentHeight":100,
|
"extentColor":Cesium.Color.WHITE,
|
"content":content
|
};
|
CesiumPop.addDivPop(options);
|
}
|
var stopTime = times[times.length - 1];
|
//插值
|
var property = new Cesium.SampledPositionProperty();
|
property.addSamples(times, nodesPosition);
|
var pinBuilder = new Cesium.PinBuilder();
|
var url = Cesium.buildModuleUrl('../Cesium/Assets/Textures/maki/pitch.png');
|
Cesium.when(pinBuilder.fromUrl(url, Cesium.Color.RED , 48),function(canvas) {
|
people_mark = viewer.entities.add({
|
position : property,
|
billboard : {
|
image : canvas.toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
}
|
});
|
});
|
//起点
|
people_mark_start = viewer.entities.add({
|
position : nodesPosition[0],
|
billboard : {
|
image : pinBuilder.fromText('起',Cesium.Color.GREEN,32).toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
}
|
});
|
//终点
|
people_mark_end = viewer.entities.add({
|
position : nodesPosition[nodesPosition.length-1],
|
billboard : {
|
image : pinBuilder.fromText('终',Cesium.Color.RED,32).toDataURL(),
|
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
|
}
|
});
|
return {
|
startTime:startTime,
|
stopTime:stopTime
|
}
|
}
|
//清除停止轨迹线
|
function stopPeopleRoute3D(){
|
viewer.entities.remove(peopleLine);
|
viewer.entities.remove(people_mark);
|
viewer.entities.remove(people_mark_start);
|
viewer.entities.remove(people_mark_end);
|
for ( var i = 0; i < cardArr.length; i++) {
|
viewer.entities.remove(cardArr[i]);
|
}
|
cardArr.length = 0;
|
CesiumPop.clearDivPop(viewer);
|
}
|
//显示各图层记录总数
|
function showOnemapCount(data){
|
$('#kpCount').html(data.keyPeople);
|
$('#fpCount').html(data.flowPeople);
|
$('#hCount').html(data.house);
|
$('#kdCount').html(data.keyDepartment);
|
$('#fcCount').html(data.fireControl);
|
$('#ssCount').html(data.security);
|
$('#bCount').html(data.business);
|
$('#esCount').html(data.emergencyStore);
|
$('#pnCount').html(data.policeNet);
|
$('#ppCount').html(data.policePointP);
|
$('#plcCount').html(data.policeLineC);
|
$('#plmCount').html(data.policeLineM);
|
$('#pnaCount').html(data.policeNetA);
|
$('#ppoCount').html(data.policePointO);
|
$('#ppsCount').html(data.policePointS);
|
$('#pptCount').html(data.policePointT);
|
}
|