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); }