//获取项目点 var currentProjectId; var currentLng, currentLat; var pickedModel;//拾取的模型 function getProjectList() { var projectList = []; $.ajax({ type: "post", async: false, url: httpConfig.webApiUrl + "v1/env/webgis/listProjects?access_token=" + access_token, contentType: "application/json;charset=utf-8", success: function (data) { if (data != null && data.length > 0) { projectList = data; } }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.log("ajax请求失败!"); } }); return projectList; } function getProjectInfoName(id) { $.ajax({ type: "get", async: false, url: httpConfig.webApiUrl + "v1/env/clientgis/projectInfo?project_id=" + id, contentType: "application/json;charset=utf-8", success: function (data) { var name = data.name; layui.use('layer', function () { var layer = layui.layer; layer.msg(name + "
" + "(鼠标双击查看场地)"); }); }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.log("ajax请求失败!"); } }); } //从后台点击进来 function getProjectByIdInit(id) { currentProjectId = id; $.ajax({ type: "get", async: false, url: httpConfig.webApiUrl + "v1/env/clientgis/worksite_models?project_id=" + id, contentType: "application/json;charset=utf-8", success: function (data) { var info = data.projectinfo; var lat = info.latitude; var lng = info.longitude; currentLng = lng; currentLat = lat; if (lng != null && lat != null) { hideSearch(); //隐藏左边的列表 // addProjectIcon(info);//添加定位的图标 viewer.clock.onTick.removeEventListener(onTickCallback);//移除地球转动 var ug = data.underground;//地下模型 toProjectPointOnMap(lng, lat, 1500);//跳转 //添加地上模型 var ground = data.ground; addGroundModel(ground); //添加地下模型 var underground = data.underground; addUnderGround(underground); var boundary = data.boundary.boundary; addBondary(boundary); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { layer.msg("请求失败"); console.log("ajax请求失败!"); } }); } function clearDrsDiv() { $(".drsElement").remove(); } /** * 点击项目 */ function getProjectByIdClick(projectId) { clearDrsDiv(); $("#model-tree").hide(); $("#model-entity").hide(); $("#model-tree-timeline").hide(); $("#model-icons").hide(); //隐藏按钮 $("#delete").hide() $("#save").hide() $.ajax({ type: 'GET', dataType: 'json', async: false, url: httpConfig.webApiUrl + 'v1/env/projectstatistic/getTemplateIdByProjectId', data: { projectId: projectId }, contentType: 'application/x-www-form-urlencoded', success(data) { var templateIds = data.ids; var currentLevel = data.level var currentTemplateId = data.id; $.ajax({ type: 'GET', dataType: 'json', async: false, url: httpConfig.webApiUrl + '/v1/env/dataTransfer/getTemplateName', data: { level: currentLevel, current: currentTemplateId, enterType: 1 }, contentType: 'application/x-www-form-urlencoded', success(data) { console.log(data); var element = document.getElementById("templateName"); element.innerText = data; } }); if (currentTemplateId != null && currentTemplateId != "") { $.ajax({ type: 'GET', dataType: 'json', async: false, url: httpConfig.webApiUrl + 'v1/env/dataTransfer/panels', data: { templateId: currentTemplateId }, contentType: 'application/x-www-form-urlencoded', success(data) { panelList = data; renderProjectChart(panelList, projectId, null); } }); } getProjectByIdInit(projectId);//跳转 } }) } //点击项目列表中的 function getProjectById(id) { currentProjectId = id; $.ajax({ type: "get", async: false, url: httpConfig.webApiUrl + "v1/env/clientgis/worksite_models?project_id=" + id, contentType: "application/json;charset=utf-8", success: function (data) { var info = data.projectinfo; var lat = info.latitude; var lng = info.longitude; currentLng = lng; currentLat = lat; if (lng != null && lat != null) { hideSearch(); //隐藏左边的列表 addProjectIcon(info);//添加定位的图标 viewer.clock.onTick.removeEventListener(onTickCallback);//移除地球转动 var ug = data.underground;//地下模型 toProjectPointOnMap(lng, lat, 1000);//跳转 //添加地上模型 var ground = data.ground; addGroundModel(ground); //添加地下模型 var underground = data.underground; addUnderGround(underground); var boundary = data.boundary.boundary; addBondary(boundary); modelTreeList(id); flyExtent(lng, lat, 100); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { layer.msg("请求失败"); console.log("ajax请求失败!"); } }); } //模型树结构 function modelTreeList(projectId) { $("#model-tree").show(); $.ajax({ type: "get", async: false, url: httpConfig.webApiUrl + "v1/env/projectModel/projectModels2?projectId=" + projectId + "&access_token=" + access_token, contentType: "application/json;charset=utf-8", success: function (data) { layui.use(['element', 'layer', 'form', 'upload', 'tree', 'util'], function () { var element = layui.element; var form = layui.form; var $ = layui.jquery, upload = layui.upload; var tree = layui.tree, util = layui.util, layer = layui.layer tree.render({ elem: '#model-tree-list' , data: data , showCheckbox: true //是否显示复选框 , id: 'model-tree-list' , isJump: false //是否允许点击节点时弹出新窗口跳转 , click: function (obj) { var data = obj.data; //获取当前点击的节点数据 var id = data.id; getModelById(id); } , oncheck: function (obj) { var ischeck = obj.checked; var objData = obj.data; var arr = new Array(); arr.push(objData); var ids = getChecked_list(arr); var idArray = ids.split(","); for (var i = 0; i < idArray.length; i++) { if (idArray[i] == null || idArray[i] == "") { continue; } var model = getprimitiveModel(idArray[i]); if (ischeck == true) { model.show = true; } else { model.show = false; } } } }); $(document).on('click', '#modelTreeShow', function (data) { checkData = tree.getChecked('model-tree-list'); var list = new Array(); list = getChecked_list(checkData); var array = list.split(","); for (var i = 0; i < array.length; i++) { if (array[i] == null || array[i] == "") { continue; } var model = getprimitiveModel(array[i]); model.show = true; } }); $(document).on('click', '#modelTreeHide', function (data) { checkData = tree.getChecked('model-tree-list'); var list = new Array(); list = getChecked_list(checkData); var array = list.split(","); for (var i = 0; i < array.length; i++) { if (array[i] == null || array[i] == "") { continue; } console.log(array[i]); var model = getprimitiveModel(array[i]); model.show = false; } }); //递归获取树结构列表 function getChecked_list(data) { var id = ""; $.each(data, function (index, item) { var tmpId = item.id; if (tmpId != "" && tmpId != "-1" && tmpId != -1) { id = id + "," + tmpId; } //item 没有children属性 if (item.children != null) { var i = getChecked_list(item.children); if (i != "") { id = id + "," + i; } } }); return id; } }); }, error: function () { } }); } //显示模型 function modelTreeShow() { } //隐藏模型 function modelTreeHide() { } //获取模型修改 function getModelById(id) { $.ajax({ type: "get", async: false, url: httpConfig.webApiUrl + "v1/env/projectModel/getProjectModelById?id=" + id + "&access_token=" + access_token, // contentType: "application/json;charset=utf-8", success: function (data) { $("#model-entity").show(); var lng = data.lng; var lat = data.lat; viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(lng, lat, 1000), duration: 1 }); $('#modelId').val(data.id); $('#modelName').html(data.model.name); $("#modelX").val(data.lng || 0); $("#modelY").val(data.lat || 0); $("#modelZ").val(data.height || 0); $("#modelHeading").val(data.heading || 0); $("#modelPitch").val(data.pitch || 0); $("#modelRoll").val(data.roll || 0); $("#modelScale").val(data.scale || 0); pickedModel = getprimitiveModel(id);//选中的模型 }, error: function (data) { layer.msg("地下物体禁止修改参数"); } }); } //更新地图上模型的位置 function updateModel() { var lng = $("#modelX").val(); var lat = $("#modelY").val(); var height = $("#modelZ").val(); var rx = $("#modelHeading").val(); var ry = $("#modelPitch").val(); var rz = $("#modelRoll").val(); var scale = $("#modelScale").val(); //获取更新的参数 var params = { tx: lng, //模型中心X轴坐标(经度,单位:十进制度) ty: lat, //模型中心Y轴坐标(纬度,单位:十进制度) tz: height, //模型中心Z轴坐标(高程,单位:米) rx: rx, //X轴(经度)方向旋转角度(单位:度) ry: ry, //Y轴(纬度)方向旋转角度(单位:度) rz: rz, //Z轴(高程)方向旋转角度(单位:度) scale: scale }; update3dtilesMaxtrix(pickedModel, params); } //定位模型 function locateModel() { var lng = $("#modelX").val(); var lat = $("#modelY").val(); viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(lng, lat, 800), duration: 1 }); } //保存模型位置 function saveModel() { var id = parseInt($('#modelId').val()); var lng = $("#modelX").val(); var lat = $("#modelY").val(); var height = $("#modelZ").val(); var rx = $("#modelHeading").val(); var ry = $("#modelPitch").val(); var rz = $("#modelRoll").val(); var scale = $("#modelScale").val(); $.ajax({ type: "POST", async: false, url: httpConfig.webApiUrl + "v1/env/projectModel/updateModelPosition", contentType: "application/json", dataType: "json", data: JSON.stringify({ "id": id, "lng": lng, "lat": lat, "height": height, "heading": rx, "pitch": ry, "roll": rz, "scale": scale }), success: function (data) { layer.msg("保存参数成功"); }, error: function () { layer.msg("net error"); } }); } function closeModel() { $("#model-entity").hide(); } //关闭树列表 function closeModelTree() { $("#model-tree").hide(); $("#model-entity").hide(); } function closeModelTreeTimeLine() { $("#model-tree").hide(); $("#model-entity").hide(); $("#model-tree-timeline").hide(); } //项目的图例 function projectIcons(projectid) { $.ajax({ type: "POST", async: false, url: httpConfig.webApiUrl + "v1/env/webgis/projectIcons?project_id=" + projectid, contentType: "application/json", dataType: "json", success: function (data) { if (data != null && data.length > 0) { $("#model-icons").show(); var name = data[0].name; var str = data[0].tag; var tags = JSON.parse(str); layui.use('laytpl', function () { var laytpl = layui.laytpl; //模板引擎 searchpanel var getTpl = modelIcons.innerHTML, view = document.getElementById('model-icons'); laytpl(getTpl).render(tags, function (html) { view.innerHTML = html; }); }); //显示名称 $("#modelIconsName").html(""); $("#modelIconsName").html(name); } }, error: function () { layer.msg("net error"); } }); } //地上 function addGroundModel(models) { for (let i = 0; i < models.length; i++) { var url = models[i].model.gltf_path; var lng = models[i].lng; var lat = models[i].lat; var height = models[i].height; var heading = models[i].heading; var pitch = models[i].pitch; var roll = models[i].roll; var scale = models[i].scale; addGltf(url, lng, lat, height, heading, pitch, roll, scale, models[i].id); } } //地下 function addUnderGround(models) { for (let i = 0; i < models.length; i++) { var url = models[i].obj_url; var fullpath = httpConfig.nginxUrl + url; var lng = models[i].lng; var lat = models[i].lat; var height = models[i].height; addGltf(fullpath, lng, lat, -10, 0, 0, 0, 1, models[i].tiles_id); } } //边界 function addBondary(jsonStr) { let b = []; var array = JSON.parse(jsonStr); for (let i = 0; i < array.length; i++) { b.push(array[i].x); b.push(array[i].y); } var glowingLine = viewer.entities.add({ name: "lightLine", polyline: { positions: Cesium.Cartesian3.fromDegreesArray(b), width: 10, material: new Cesium.PolylineGlowMaterialProperty({ glowPower: 0.2, color: Cesium.Color.BLUE, }), followSurface: true, //是否贴着地表 distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 5000.0), }, }); } //添加项目的定位的图标 function addProjectIcon(entity) { var icon = viewer.entities.getById("project_" + entity.id); if (icon == undefined) {//如果不存在则添加 var lng = entity.longitude; var lat = entity.latitude; if (lng == null || lng == "" || lat == null || lat == "") { console.log("经纬度信息有误"); return; } viewer.entities.add({ id: "project_" + entity.id, name: entity.name, position: Cesium.Cartesian3.fromDegrees(entity.longitude, entity.latitude, 20), label: { show: true, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, font: 'bold 14px Helvetica', fillColor: Cesium.Color.WHITE, text: entity.name, disableDepthTestDistance: Number.POSITIVE_INFINITY, heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND, distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000000.0, 200000000.0) }, billboard: { image: '../assets/images/map/location-red.png', width: 24, height: 24, rotation: 0, verticalOrigin: Cesium.VerticalOrigin.TOP, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, disableDepthTestDistance: Number.POSITIVE_INFINITY,//广告牌不进行深度检测 heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND, distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000000.0, 200000000.0) } }); } } //添加项目点到地图上 function addProjectIcons(data) { if (data == null) { console.log("数据为空"); return; } for (var i = 0; i < data.length; i++) { var entity = data[i]; var icon = viewer.entities.getById("project_" + entity.id); if (icon == undefined) {//如果不存在则添加 var lng = entity.longitude; var lat = entity.latitude; if (lng == null || lng == "" || lat == null || lat == "") { console.log(entity.name + "经纬度信息有误"); continue; } var name = entity.name; if (name.length > 6) { name = name.substring(0, 6) + "..."; } viewer.entities.add({ id: "project_" + entity.id, name: entity.name, position: Cesium.Cartesian3.fromDegrees(entity.longitude, entity.latitude), label: { show: true, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, font: 'bold 14px Helvetica', fillColor: Cesium.Color.WHITE, text: name, fillColor: Cesium.Color.WHITE, disableDepthTestDistance: Number.POSITIVE_INFINITY, heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000000.0, 200000000.0) }, billboard: { image: '../assets/images/map/location-red.png', width: 40, height: 40, rotation: 0, verticalOrigin: Cesium.VerticalOrigin.TOP, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, disableDepthTestDistance: Number.POSITIVE_INFINITY,//广告牌不进行深度检测 heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, distanceDisplayCondition: new Cesium.DistanceDisplayCondition(1000000.0, 200000000.0) } }); } } } //自动旋转地球 绕点旋转 function flyExtent(lng, lat, height) { var pitch = Cesium.Math.toRadians(-10); var angle = 360 / 30; var distance = 2000; var startTime = Cesium.JulianDate.fromDate(new Date()); var stopTime = Cesium.JulianDate.addSeconds(startTime, 10, new Cesium.JulianDate());//转动时长 单位秒 viewer.clock.multiplier = 100; //速度 viewer.clock.startTime = startTime.clone(); viewer.clock.stopTime = stopTime.clone(); viewer.clock.currentTime = startTime.clone(); // 当前时间 viewer.clock.clockRange = Cesium.ClockRange.CLAMPED; // 行为方式 viewer.clock.clockStep = Cesium.ClockStep.SYSTEM_CLOCK; // 时钟设置为当前系统时间; 忽略所有其他设置。 var initialHeading = viewer.camera.heading; var Exection = function TimeExecution() { var delTime = Cesium.JulianDate.secondsDifference(viewer.clock.currentTime, viewer.clock.startTime) / 5;//控制转速 var heading = Cesium.Math.toRadians(delTime * angle) + initialHeading; viewer.scene.camera.setView({ destination: Cesium.Cartesian3.fromDegrees(lng, lat, height), // 点的坐标 orientation: { heading: heading, pitch: pitch, } }); viewer.scene.camera.moveBackward(distance); if (Cesium.JulianDate.compare(viewer.clock.currentTime, viewer.clock.stopTime) >= 0) { viewer.clock.onTick.removeEventListener(Exection); } }; viewer.clock.onTick.addEventListener(Exection); } //飞跃到项目点 function toProjectPointOnMap(lng, lat, height) { viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(lng, lat, height), duration: 5, complete: function () { viewer.camera.setView({ destination: Cesium.Cartesian3.fromDegrees(Number(lng), Number(lat - 0.01), Number(300)), orientation: { heading: viewer.camera.heading, pitch: Cesium.Math.toRadians(-15), } }); } }); } //飞跃到项目 function toProjectPointOnMap2(id) { var project = getProjectEntity(id); var lng = project.longitude; var lat = project.latitude; viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(lng, lat, 3000), }); } //展示详情 function showProjectDetails(id) { isProjectDetailsShow = true; loadEnvProjectTable(id); $("#projectDetails").show(); $('#projectList').hide(); isProjectListShow = false; $.timeliner({ startOpen: ['#19550828EX', '#19630828EX'] }); $.timeliner({ timelineContainer: '#timelineContainer_2' }); $('#viewer').viewer({ url: "data-original" }); } //重新复制了上面的方法 function showProjectDetails2(id) { isProjectDetailsShow = true; loadEnvProjectTable(id); $("#projectDetails").show(); $('#projectList').hide(); isProjectListShow = false; $.timeliner({ startOpen: ['#19550828EX', '#19630828EX'] }); $.timeliner({ timelineContainer: '#timelineContainer_2' }); $('#viewer').viewer({ url: "data-original" }); } function loadEnvProjectTable(id) { var pj = getProjectEntity(id); $("#env_project_table").html(); var content = ""; content += '' + '名称' + '' + '' + pj.name + '' + '' + '' + '地址' + '' + '' + getPjAddr(pj) + '' + '' + '' + '经纬度' + '' + '' + pj.longitude + ',' + pj.latitude + '' + '' + '' + '负责人' + '' + '' + '李静文、王文峰' + '' + '' + '' + '详情' + '' + '' + '查看更多' + '' + ''; $("#env_project_table").html(content); } function getPjAddr(pj) { var content = ""; if (pj.province != null && pj.province != "" && typeof (pj.province) != "undefined") { content += pj.province; } if (pj.city != null && pj.city != "" && typeof (pj.city) != "undefined") { content += "," + pj.city; } if (pj.address != null && pj.address != "" && typeof (pj.address) != "undefined") { content += "," + pj.address; } return content; } // function getProjectEntity(id) { for (var i = 0; i < p_points.length; i++) { if (p_points[i].id == id) { return p_points[i]; } } return null; } //加载边界 function loadboundary() { var data = "116.39076592481405,39.913584611326485,46.531462546812534,116.39084095094661,39.90804862957625,47.7467262344139,116.40255134076679,39.90803117821826,48.51718798514972,116.40243556060928,39.91354936267734,47.88634387056292"; //var data="117.27203264700,39.08399749170,0,117.27205064000,39.08505047340,0,117.27191064300,39.08506047270,0,117.27190764200,39.08519647040,0,117.27056067100,39.08520046520,0,117.27038067600,39.08516046520,0,117.26913170300,39.08516146040,0,117.26883071100,39.08492046350,0,117.26879071200,39.08489046380,0,117.26831072500,39.08450046880,0,117.26823733600,39.08445096340,0,117.26752074400,39.08413047230,0,117.26678116600,39.08400387450,0,117.26628529500,39.08403456000,0,117.26559078700,39.08406046620,0,117.26448037300,39.08416323810,0,117.26300084200,39.08439045060,0,117.26244985200,39.08471644280,0,117.26213086000,39.08450044530,0,117.26187460300,39.08441590520,0,117.26143262700,39.08376448910,0,117.26135389000,39.08343363560,0,117.26144892900,39.08333475700,0,117.26136089100,39.08317631100,0,117.26117008300,39.08317673850,0,117.26112588900,39.08313298610,0,117.26121496400,39.08306214190,0,117.26109089400,39.08263047400,0,117.26096684300,39.08245841270,0,117.26087383900,39.08246214570,0,117.26056375300,39.08127532740,0,117.26033092300,39.08072050440,0,117.26033092300,39.08067050530,0,117.26038092200,39.08061050650,0,117.26014093000,39.08019051290,0,117.26026092800,39.08013051440,0,117.26008493400,39.07984651870,0,117.26031202800,39.07979954030,0,117.26031092900,39.07975052120,0,117.26027093100,39.07969052210,0,117.26019715200,39.07932553450,0,117.26040993100,39.07910853280,0,117.26252088500,39.07908054130,0,117.26328086900,39.07906054450,0,117.26666079600,39.07882056160,0,117.26710078700,39.07878056390,0,117.26837076000,39.07866057090,0,117.26995535900,39.07851339180,0,117.27115070200,39.07825058860,0,117.27228832200,39.07798008280,0,117.27244992500,39.07786292720,0,117.27437263600,39.07760061210,0,117.27418644900,39.07923437610,0,117.27423062200,39.08031056440,0,117.27424062000,39.08061055920,0,117.27425061900,39.08077055640,0,117.27424761700,39.08101755210,0,117.27400226100,39.08141768530,0,117.27390036300,39.08195176730,0,117.27394061600,39.08231052840,0,117.27397561200,39.08280751990,0,117.27344262300,39.08283851730,0,117.27348261800,39.08350450580,0,117.27315662200,39.08399949600,0"; //var data="117.27203264700,39.08399749170,100,117.27205064000,39.08505047340,100,117.27191064300,39.08506047270,100,117.27190764200,39.08519647040,100,117.27056067100,39.08520046520,100,117.27038067600,39.08516046520,100,117.26913170300,39.08516146040,100,117.26883071100,39.08492046350,100,117.26879071200,39.08489046380,100,117.26831072500,39.08450046880,100,117.26823733600,39.08445096340,100,117.26752074400,39.08413047230,100,117.26678116600,39.08400387450,100,117.26628529500,39.08403456000,100,117.26559078700,39.08406046620,100,117.26448037300,39.08416323810,100,117.26300084200,39.08439045060,100,117.26244985200,39.08471644280,100,117.26213086000,39.08450044530,100,117.26187460300,39.08441590520,100,117.26143262700,39.08376448910,100,117.26135389000,39.08343363560,100,117.26144892900,39.08333475700,100,117.26136089100,39.08317631100,100,117.26117008300,39.08317673850,100,117.26112588900,39.08313298610,100,117.26121496400,39.08306214190,100,117.26109089400,39.08263047400,100,117.26096684300,39.08245841270,100,117.26087383900,39.08246214570,100,117.26056375300,39.08127532740,100,117.26033092300,39.08072050440,100,117.26033092300,39.08067050530,100,117.26038092200,39.08061050650,100,117.26014093000,39.08019051290,100,117.26026092800,39.08013051440,100,117.26008493400,39.07984651870,100,117.26031202800,39.07979954030,100,117.26031092900,39.07975052120,100,117.26027093100,39.07969052210,100,117.26019715200,39.07932553450,100,117.26040993100,39.07910853280,100,117.26252088500,39.07908054130,100,117.26328086900,39.07906054450,100,117.26666079600,39.07882056160,100,117.26710078700,39.07878056390,100,117.26837076000,39.07866057090,100,117.26995535900,39.07851339180,100,117.27115070200,39.07825058860,100,117.27228832200,39.07798008280,100,117.27244992500,39.07786292720,100,117.27437263600,39.07760061210,100,117.27418644900,39.07923437610,100,117.27423062200,39.08031056440,100,117.27424062000,39.08061055920,100,117.27425061900,39.08077055640,100,117.27424761700,39.08101755210,100,117.27400226100,39.08141768530,100,117.27390036300,39.08195176730,100,117.27394061600,39.08231052840,100,117.27397561200,39.08280751990,100,117.27344262300,39.08283851730,100,117.27348261800,39.08350450580,100,117.27315662200,39.08399949600,100"; var poiStrArr = data.split(","); var poiArr = []; $.each(poiStrArr, function (index, value) { poiArr.push(Number(value)); }); addNettoMap(poiArr, "net"); } var isLoadArea = false; function loadboundary2(id) { if (isLoadArea) { removeAllEntities(); isLoadArea = false; return; } var data = "116.39076592481405,39.913584611326485,46.531462546812534,116.39084095094661,39.90804862957625,47.7467262344139,116.40255134076679,39.90803117821826,48.51718798514972,116.40243556060928,39.91354936267734,47.88634387056292"; //var data="117.27203264700,39.08399749170,0,117.27205064000,39.08505047340,0,117.27191064300,39.08506047270,0,117.27190764200,39.08519647040,0,117.27056067100,39.08520046520,0,117.27038067600,39.08516046520,0,117.26913170300,39.08516146040,0,117.26883071100,39.08492046350,0,117.26879071200,39.08489046380,0,117.26831072500,39.08450046880,0,117.26823733600,39.08445096340,0,117.26752074400,39.08413047230,0,117.26678116600,39.08400387450,0,117.26628529500,39.08403456000,0,117.26559078700,39.08406046620,0,117.26448037300,39.08416323810,0,117.26300084200,39.08439045060,0,117.26244985200,39.08471644280,0,117.26213086000,39.08450044530,0,117.26187460300,39.08441590520,0,117.26143262700,39.08376448910,0,117.26135389000,39.08343363560,0,117.26144892900,39.08333475700,0,117.26136089100,39.08317631100,0,117.26117008300,39.08317673850,0,117.26112588900,39.08313298610,0,117.26121496400,39.08306214190,0,117.26109089400,39.08263047400,0,117.26096684300,39.08245841270,0,117.26087383900,39.08246214570,0,117.26056375300,39.08127532740,0,117.26033092300,39.08072050440,0,117.26033092300,39.08067050530,0,117.26038092200,39.08061050650,0,117.26014093000,39.08019051290,0,117.26026092800,39.08013051440,0,117.26008493400,39.07984651870,0,117.26031202800,39.07979954030,0,117.26031092900,39.07975052120,0,117.26027093100,39.07969052210,0,117.26019715200,39.07932553450,0,117.26040993100,39.07910853280,0,117.26252088500,39.07908054130,0,117.26328086900,39.07906054450,0,117.26666079600,39.07882056160,0,117.26710078700,39.07878056390,0,117.26837076000,39.07866057090,0,117.26995535900,39.07851339180,0,117.27115070200,39.07825058860,0,117.27228832200,39.07798008280,0,117.27244992500,39.07786292720,0,117.27437263600,39.07760061210,0,117.27418644900,39.07923437610,0,117.27423062200,39.08031056440,0,117.27424062000,39.08061055920,0,117.27425061900,39.08077055640,0,117.27424761700,39.08101755210,0,117.27400226100,39.08141768530,0,117.27390036300,39.08195176730,0,117.27394061600,39.08231052840,0,117.27397561200,39.08280751990,0,117.27344262300,39.08283851730,0,117.27348261800,39.08350450580,0,117.27315662200,39.08399949600,0"; //var data="117.27203264700,39.08399749170,100,117.27205064000,39.08505047340,100,117.27191064300,39.08506047270,100,117.27190764200,39.08519647040,100,117.27056067100,39.08520046520,100,117.27038067600,39.08516046520,100,117.26913170300,39.08516146040,100,117.26883071100,39.08492046350,100,117.26879071200,39.08489046380,100,117.26831072500,39.08450046880,100,117.26823733600,39.08445096340,100,117.26752074400,39.08413047230,100,117.26678116600,39.08400387450,100,117.26628529500,39.08403456000,100,117.26559078700,39.08406046620,100,117.26448037300,39.08416323810,100,117.26300084200,39.08439045060,100,117.26244985200,39.08471644280,100,117.26213086000,39.08450044530,100,117.26187460300,39.08441590520,100,117.26143262700,39.08376448910,100,117.26135389000,39.08343363560,100,117.26144892900,39.08333475700,100,117.26136089100,39.08317631100,100,117.26117008300,39.08317673850,100,117.26112588900,39.08313298610,100,117.26121496400,39.08306214190,100,117.26109089400,39.08263047400,100,117.26096684300,39.08245841270,100,117.26087383900,39.08246214570,100,117.26056375300,39.08127532740,100,117.26033092300,39.08072050440,100,117.26033092300,39.08067050530,100,117.26038092200,39.08061050650,100,117.26014093000,39.08019051290,100,117.26026092800,39.08013051440,100,117.26008493400,39.07984651870,100,117.26031202800,39.07979954030,100,117.26031092900,39.07975052120,100,117.26027093100,39.07969052210,100,117.26019715200,39.07932553450,100,117.26040993100,39.07910853280,100,117.26252088500,39.07908054130,100,117.26328086900,39.07906054450,100,117.26666079600,39.07882056160,100,117.26710078700,39.07878056390,100,117.26837076000,39.07866057090,100,117.26995535900,39.07851339180,100,117.27115070200,39.07825058860,100,117.27228832200,39.07798008280,100,117.27244992500,39.07786292720,100,117.27437263600,39.07760061210,100,117.27418644900,39.07923437610,100,117.27423062200,39.08031056440,100,117.27424062000,39.08061055920,100,117.27425061900,39.08077055640,100,117.27424761700,39.08101755210,100,117.27400226100,39.08141768530,100,117.27390036300,39.08195176730,100,117.27394061600,39.08231052840,100,117.27397561200,39.08280751990,100,117.27344262300,39.08283851730,100,117.27348261800,39.08350450580,100,117.27315662200,39.08399949600,100"; var poiStrArr = data.split(","); var poiArr = []; $.each(poiStrArr, function (index, value) { poiArr.push(Number(value)); }); isLoadArea = true; addNettoMap(poiArr, "net"); } //根据坐标点画面 var netobjBoundary; function addNettoMap(pois, type) { removeAllEntities(); var cartesian3; if (type == 'net') { cartesian3 = Cesium.Cartesian3.fromDegreesArrayHeights(pois); } else { cartesian3 = Cesium.Cartesian3.fromDegreesArray(pois); } var tmpGeometryInstance = new Cesium.GeometryInstance({ geometry: new Cesium.PolygonGeometry({ polygonHierarchy: new Cesium.PolygonHierarchy(cartesian3), extrudedHeight: 5000, }), attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.ORANGE.withAlpha(0.6)), } }); var tmpClassificationPrimitive = new Cesium.ClassificationPrimitive({ geometryInstances: tmpGeometryInstance }); viewer.scene.primitives.add(tmpClassificationPrimitive); netobjBoundary = tmpClassificationPrimitive; //求一个约等于的中间数 var firstLng = Number(pois[0]); var firstLat = Number(pois[1]); var middleLng = Number(pois[pois.length / 2]); var middleLat = Number(pois[pois.length / 2 + 1]) var rLng = (firstLng + middleLng) / 2; var rLat = (firstLat + middleLat) / 2; console.log("firstLng=" + firstLng + "firstLat=" + firstLat + "middleLng=" + middleLng + "middleLat=" + middleLat); viewer.camera.flyTo({ // destination : Cesium.Cartesian3.fromDegrees(rLng, rLat, Number(pois[2])+600) destination: Cesium.Cartesian3.fromDegrees(rLng, rLat, Number(2000)) }); } //清除地图中所有实体 function removeAllEntities() { viewer.scene.primitives.remove(netobjBoundary);//去除网格 } //查看项目详情 function viewProjectDetail(id) { //跳转到div 详情 $("#veiwMoreProjectInfo").show(); } //其他统计 function projstatistic() { var param = 'access_token=' + access_token + '&proj_name=' + '北京森星医药耗材有限公司厂区场地调查项目'; var url = linkSysUrls + 'largescreen/project.html?' + escape(param); window.open(url, "_blank") } //统计2 function projstatistic2(name) { var param = 'access_token=' + access_token + '&proj_name=' + name; var url = linkSysUrls + 'largescreen/project.html?' + escape(param); window.open(url, "_blank") } var pm25Array = [ { "id": 1, "name": "传感器A", "longitude": 116.3924, "latitude": 39.9125 }, { "id": 2, "name": "传感器B", "longitude": 116.3993, "latitude": 39.9123 }, { "id": 3, "name": "传感器C", "longitude": 116.3925, "latitude": 39.9099 }, { "id": 4, "name": "传感器D", "longitude": 116.3941, "latitude": 39.9098 }, { "id": 5, "name": "传感器E", "longitude": 116.4005, "latitude": 39.9096 }, { "id": 6, "name": "传感器F", "longitude": 116.3960, "latitude": 39.9087 } ]; //地图上展示 PM2.5 传感器位置 function pm25OnMap() { //关闭当前窗体 // ctrlPollutions(); // //关闭项目面板 // ctrlProjectDetails(); for (var i = 0; i < pm25Array.length; i++) { viewer.entities.add({ id: "pm25_" + pm25Array[i].id, name: pm25Array[i].name, position: Cesium.Cartesian3.fromDegrees(pm25Array[i].longitude, pm25Array[i].latitude), point: { pixelSize: 12, color: Cesium.Color.YELLOW, outlineColor: Cesium.Color.WHITE, outlineWidth: 3, outline: true, disableDepthTestDistance: Number.POSITIVE_INFINITY, heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND }, label: { show: true, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, font: 'bold 14px Helvetica', fillColor: Cesium.Color.WHITE, text: pm25Array[i].name, disableDepthTestDistance: Number.POSITIVE_INFINITY, heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND } }); } viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(Number(pm25Array[0].longitude), Number(pm25Array[0].latitude), 3000) }); } //统计模式 function statisticPattern() { $("#model-tree").hide(); $("#model-entity").hide(); $("#model-tree-timeline").hide(); $("#model-icons").hide(); $(".drsElement").show(); } //场地模式 function worksitePattern() { if (currentProjectId == null) { layui.use('layer', function () { var layer = layui.layer; layer.msg("还未在任何项目中"); }); return; } $("#worksite-tools").show(); $(".drsElement").hide(); $("#model-tree-timeline").hide(); //项目树 modelTreeList(currentProjectId); //图例 projectIcons(currentProjectId); } //关闭工具条 function closeTools() { $("#worksite-tools").hide(); } //复制链接 function shareLink() { var url = window.location.href; var clipboard = new Clipboard('#copyi', { text: function () { return url; } }); layui.use('layer', function () { var layer = layui.layer; layer.msg("已复制分享到剪切板"); }); } //采样点 function samplePoint() { if (currentProjectId == null || currentProjectId == undefined || projectId == "") { layui.use('layer', function () { var layer = layui.layer; layer.msg("当前不在项目模型下,无法查看采样点"); }); return; } $.ajax({ type: "post", async: false, url: httpConfig.webApiUrl + "v1/env/survey/getPointByProject?project_id=" + currentProjectId, contentType: "application/json;charset=utf-8", success: function (data) { if (data == null || data.length <= 0) { layui.use('layer', function () { var layer = layui.layer; layer.msg("本项目暂无采样点"); }); } addSampleIcons(data); }, error: function () { layui.use('layer', function () { var layer = layui.layer; layer.msg("网络故障"); }); } }); } //地图上添加采样点 function addSampleIcons(data) { for (var i = 0; i < data.length; i++) { var type = data[i].type; var color; //初步调查 0 详细调查 1 if (type == "0") { color = Cesium.Color.BLUE; } else { color = Cesium.Color.RED; } var entity = viewer.entities.getById("sample_" + data[i].id); if (entity == undefined) {//如果不存在则添加 viewer.entities.add({ id: "sample_" + data[i].id, name: data[i].sample_name, position: Cesium.Cartesian3.fromDegrees(data[i].longitude, data[i].latitude), point: { pixelSize: 12, color: color, outlineColor: Cesium.Color.WHITE, outlineWidth: 3, outline: true, disableDepthTestDistance: Number.POSITIVE_INFINITY, heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND }, label: { show: true, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, font: 'bold 14px Helvetica', fillColor: Cesium.Color.WHITE, text: "", disableDepthTestDistance: Number.POSITIVE_INFINITY, heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND } }); } } } //查看采样点详情 function getSampleById(id) { $.ajax({ type: "post", async: false, url: httpConfig.webApiUrl + "v1/env/survey/getPointByProjectAndId?id=" + id, contentType: "application/json;charset=utf-8", success: function (data) { var entity = data; if (entity == null) { layui.use('layer', function () { var layer = layui.layer; layer.msg("数据异常"); }); } var content = ""; content += "编号 :" + entity.sample_no + "
" + "名称 :" + entity.sample_name + "
" + "调查类型 :" + entity.type_name + "
" + "采样日期 :" + entity.sample_date + "
" + "样品数量 :" + entity.sample_num + "
" + "状态 :" + entity.state_name + "
" + "是否已经送检 :" + entity.submit_flag_name + "
" + "送检编号 :" + entity.test_no + "
" + "检测指标 :" + entity.test_type + "
"; layui.use('layer', function () { var layer = layui.layer; layer.msg(content, { time: 10000 }); }); }, error: function () { layui.use('layer', function () { var layer = layui.layer; layer.msg("网络故障"); }); } }); } //项目组成员 function userGroup() { if (currentProjectId == null || currentProjectId == undefined || projectId == "") { layui.use('layer', function () { var layer = layui.layer; layer.msg("当前不在项目模型下,无法查看采样点"); }); return; } var url = httpConfig.webApiUrl; layui.use('layer', function () { var layer = layui.layer; layer.open({ type: 2, title: "项目组员", maxmin: true, shade: 0, maxmin: false, scrollbar: false, offset: 'rb', shadeClose: false, //点击遮罩关闭层 area: ['350px', '600px'], resize: false, content: 'project/users.html', success: function (layero, index) { var iframe = window['layui-layer-iframe' + index];//拿到iframe元素 iframe.child(currentProjectId, url)//向此iframe层方法 传递参数 } }); }); } //视频监控点 function videoPoint() { if (currentProjectId == null || currentProjectId == undefined || projectId == "") { layui.use('layer', function () { var layer = layui.layer; layer.msg("当前不在项目模型下,无法查看采样点"); }); return; } $.ajax({ type: "post", async: false, url: httpConfig.webApiUrl + "v1/env/webgis/cameraList?project_id=" + currentProjectId, contentType: "application/json;charset=utf-8", success: function (data) { addCamera(data); }, error: function () { layui.use('layer', function () { var layer = layui.layer; layer.msg("网络故障"); }); } }); } //添加监控点 function addCamera(data) { var geojson = { "type": "FeatureCollection", "features": [] }; for (var i = 0; i < data.length; i++) { var lng = data[i].lng; var lat = data[i].lat; var id = "camera_" + data[i].id; var name = data[i].name; if (lng == null || lat == null) { continue; } var feature = { "type": "Feature", "geometry": { "type": "Point", "coordinates": [lng, lat, 1] }, "id": id, "name": name, "properties": { "title": "marker", "marker-symbol": "camera", "marker-color": "#8A2BE2" } }; geojson.features.push(feature); } var promise = Cesium.GeoJsonDataSource.load(geojson, { "markerSize": 40 }); var dataSourcePromise = viewer.dataSources.add(promise); } //播放视频 function playVideo(id) { var loadstr = '' layui.use('layer', function () { var layer = layui.layer; layer.open({ type: 1, title: false, area: ['630px', '360px'], // shade: 0.8, closeBtn: 0, shadeClose: true, content: loadstr //content: '//player.youku.com/embed/XMzI1NjQyMzkwNA==' //cotent:'https://haokan.baidu.com/v?vid=5125867043400442775&pd=bjh&fr=bjhauthor&type=video' }); }); } //清除图层 function clearLayer() { //移除点 var entitys = viewer.entities._entities._array; for (var i = 0; i < entitys.length; i++) { if (entitys[i]._id.indexOf("sample_") != -1) { viewer.entities.remove(entitys[i]); i--; } } viewer.dataSources.removeAll(true); layui.use('layer', function () { var layer = layui.layer; layer.msg("已经清除采样点图层"); }); } // var isSurfaceTransparent = false; //地表透明 function surfaceTransparent() { if (isSurfaceTransparent == false) { isSurfaceTransparent = true; viewer.imageryLayers._layers.forEach(layer => { layer.alpha = 0.6; // 我们可以设置为0 }); viewer.scene.globe.baseColor = new Cesium.Color(0, 0, 0, 0); viewer.scene.globe.depthTestAgainstTerrain = !0; viewer.scene.highDynamicRange = !1; viewer.scene.skyAtmosphere.show = !1; viewer.scene.skyBox.show = !1; } else { isSurfaceTransparent = false; viewer.imageryLayers._layers.forEach(layer => { layer.alpha = 1.0; // 我们可以设置为0 }); viewer.scene.globe.baseColor = new Cesium.Color(0, 0, 0, 0); viewer.scene.globe.depthTestAgainstTerrain = 0; viewer.scene.highDynamicRange = 1; viewer.scene.skyAtmosphere.show = 1; viewer.scene.skyBox.show = 1; } } //场地演进 function worksiteTimeline() { if (currentProjectId == null || currentProjectId == undefined || currentProjectId == "") { layui.use('layer', function () { var layer = layui.layer; layer.msg("当前不在项目模型下,无法查看场地演进"); }); return; } $(".drsElement").hide(); $("#model-tree").hide(); $("#model-entity").hide(); $("#model-icons").hide(); $("#model-tree-timeline").show(); $.ajax({ type: 'GET', dataType: 'json', async: false, url: httpConfig.webApiUrl + 'v1/env/projectModel/worksiteTimeLine?projectId=' + currentProjectId, contentType: 'application/x-www-form-urlencoded', success(data) { var childs = new Array(); if (data != null) { data.forEach(element => { console.log(element); childs = childs.concat(element.children); }); } layui.use(['element', 'layer', 'form', 'upload', 'tree', 'util'], function () { var element = layui.element; var form = layui.form; var $ = layui.jquery, upload = layui.upload; var tree = layui.tree, util = layui.util, layer = layui.layer; console.log(data); tree.render({ elem: '#model-tree-list-timeline' , data: data , showCheckbox: false //是否显示复选框 , id: 'model-tree-list-timeline' , isJump: false //是否允许点击节点时弹出新窗口跳转 , click: function (obj) { } , oncheck: function () { } }); $(document).on('click', '#modelTreeTimeLineBtn', function (data) { //清空模型 childs.forEach(element => { var id = element.id; var model = getprimitiveModel(id); model.show = false; }); new Promise(function executor(resolve) { set(childs); }).then(function () { console.log(currentLng); flyExtent(currentLng, currentLat - 0.01, 500); }) }); function set(childs) { for (var i = 0; i < childs.length; i++) { (function (j) { setTimeout(function () { var id = childs[j].id; var lng = childs[j].lng; var lat = childs[j].lat; var model = getprimitiveModel(id); model.show = true; viewer.camera.setView({ destination: Cesium.Cartesian3.fromDegrees(Number(lng), Number(lat - 0.005), Number(100)), orientation: { heading: viewer.camera.heading, pitch: Cesium.Math.toRadians(-12), } }); }, 3000 * j) })(i); } } }); }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.log("网络请求失败!"); } }); } //检测点 function MonitorPoint() { if (currentProjectId == null || currentProjectId == undefined || projectId == "") { layui.use('layer', function () { var layer = layui.layer; layer.msg("当前不在项目模型下,无法查看监测点"); }); return; } var data=[ {"id":1,"name":"监测点A","lng":117.2672,"lat":39.0838}, {"id":1,"name":"监测点A","lng":117.2632,"lat":39.08}, {"id":1,"name":"监测点A","lng":117.2672,"lat":39.0888}, ] addMtionPoint(data); } //添加监控点 function addMtionPoint(data) { var geojson = { "type": "FeatureCollection", "features": [] }; for (var i = 0; i < data.length; i++) { var lng = data[i].lng; var lat = data[i].lat; var id = "motion_" + data[i].id; var name = data[i].name; if (lng == null || lat == null) { continue; } var feature = { "type": "Feature", "geometry": { "type": "Point", "coordinates": [lng, lat, 1] }, "id": id, "name": name, "properties": { "title": "marker", "marker-symbol": "water", "marker-color": "#e69966" } }; geojson.features.push(feature); } var promise = Cesium.GeoJsonDataSource.load(geojson, { "markerSize": 40 }); var dataSourcePromise = viewer.dataSources.add(promise); } //展示点 function showMotionPoint(id){ var layer = layui.layer; layer.open({ type: 2, title: "监测点", maxmin: true, shade: 0, maxmin: false, scrollbar: false, offset: 'rb', shadeClose: false, //点击遮罩关闭层 area: ['600px', '350px'], resize: false, content: 'smelldata/smellChart.html', success: function (layero, index) { //var iframe = window['layui-layer-iframe' + index];//拿到iframe元素 //iframe.child(currentProjectId, url)//向此iframe层方法 传递参数 } }); }