document.write('');
/*
*一张图 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 = '
'
+ ''
+ '
'
+ '
';
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 += '
'
+ '' + ''
+ '
';
}
content += '
';
$('#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 = ''
+ ''
+ '
'
+ '
';
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 += '
'
+ '' + ''
+ '
';
}
content += '
';
$('#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 = ''
+ ''
+ '
'
+ '
';
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 += '
'
+ '' + ''
+ '
';
}
content += '
';
$('#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 = ''
+ ''
+ '
'
+ '
';
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 += '
'
+ '' + ''
+ ''
+ ''
+ ''
+ '
';
}
content += '
';
$('#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 = ''
+ ''
+ '
'
+ '
';
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 += '
'
+ ''
+ ''
+ ''
+ ''
+ ''
+ '
';
}
content += '
';
$('#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 = ''
+ ''
+ '
'
+ '
';
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 += '
'
+ ''
+ ''
+ ''
+ ''
+ ''
+ '
';
}
content += '
';
$('#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 = ''
+ ''
+ '
'
+ '
';
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 += '
'
+ ''
+ ''
+ ''
+ ''
+ ''
+ '
'
}
content += '
';
$('#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 = ''
+ ''
+ '
'
+ '
';
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 += '
'
+ ''
+ '
';
}
content += '
';
$('#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 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 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;i0){startTime = result.startTime};
if(Cesium.JulianDate.compare(stopTime, result.stopTime)<0){stopTime = result.stopTime};
viewer.clock.startTime = startTime.clone();
viewer.clock.stopTime = stopTime.clone();
viewer.clock.currentTime = startTime.clone();
viewer.clock.clockRange = Cesium.ClockRange.UNBOUNDED;
viewer.clock.multiplier = 10;
viewer.timeline.zoomTo(startTime, stopTime);
layer.closeAll();
}
//添加轨迹线和实体等
var 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 = ''
+' '
+' | '
+' 报 警 '
+'识 别 '
+' |
'
+'地点 | xxxxxxxx学校xxxxxx |
'
+'时间 | 2019-11-26 12:12:56 |
'
+'
';
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 = '';
if(nodes[i].faPhoto){
content +=' '
+' | '
+' 报 警 '
+'识 别 '
+' |
'
+'地点 | '+nodes[i].faAdd+' |
'
+'时间 | '+nodes[i].faTime+' |
'
+'
';
}else{
content +=' '
+' | '
+' 记 录 '
+'刷 卡 '
+' |
'
+'地点 | '+nodes[i].crAdd+' |
'
+'时间 | '+nodes[i].crTime+' |
'
+'';
}
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);
}