//获取项目点
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层方法 传递参数
}
});
}