"use script"; //开发环境建议开启严格模式 //系统 功能入口 var userid = '2'; var Vec_annoTileLayer; var Img_annoTileLayer; var queryDataType = 'hour'; var queryDataTStart = '2021-09-08 12:00:00'; //getDefaultDateTime(); // format "yyyy-MM-dd hh:00:00" var queryDataTEnd = ''; var layer_1001_guokong; var layer_1002_weizhan; var layer_1003_jiance; var layer_1004_taxi; var layer_1005_region; var layer_1006_roadsection; var layer_wind; var layer_grid_100; var layer_grid_1000; var layer_grid_5000; function getDefaultDateTime() { var now = new Date; now.setMinutes(now.getMinutes() - 60); return now.getFullYear + '-' + (now.getMonth() + 1) + '-' + now.getDate() + ' ' + now.getHours() + ':00:00'; } function addTDTAnnoLayer() { Img_annoTileLayer = new mars3d.layer.TdtLayer({ name: "影像注记", layer: "img_z", key: mars3d.Token.tiandituArr, }); Img_annoTileLayer.show = false; Img_annoTileLayer.pid = 50; map.addLayer(Img_annoTileLayer); Vec_annoTileLayer = new mars3d.layer.TdtLayer({ name: "矢量图注记", layer: "vec_z", key: mars3d.Token.tiandituArr, }); Vec_annoTileLayer.show = false; Vec_annoTileLayer.pid = 50; map.addLayer(Vec_annoTileLayer); } function addguokongLayers(datatime) { layer_1001_guokong = new mars3d.layer.DivLayer({ name: '国控点', pid: 99, //图层管理 中使用,父节点id show: false, selectedMapStyleOptions:'pm25', hasMapStyleOptions:['pm25','pm10','no','no2','nox','co'] }); map.addLayer(layer_1001_guokong); layer_1001_guokong.on(mars3d.EventType.click, function (event) { console.log("监听layer,单击了矢量对象", event); console.log(event.graphic?.attr) var item = event.graphic?.attr; //haoutil.msg('单击了:' + item['高校名称']) }); layer_1001_guokong.bindPopup(function (event) { let item = event.graphic?.attr; var html = "高校名称:" + item["高校名称"] + "
所属地区:" + item["地区"] + "
主管部门:" + item["主管部门"] + "
办学层次:" + item["办学层次"] + "
王牌专业:" + item["王牌专业"] + "

详细信息

"; return html; }); // add 国控点 //显示高校点 $.getJSON("//data.mars3d.cn/file/apidemo/gaoxiao.json", (result) => { //$.getJSON("http://58.246.27.194:7012/dataapi/Bdata?bid=get_guokong_hour&datatime="+datatime, (result) => { var pointColorArr = ["#f33349", "#f79a2c", "#f2fa19", "#95e40c", "#1ffee6"]; for (var i = 0, len = result.length; i < len; i++) { var item = result[i]; var jwd = item["经纬度"].split(","); if (jwd.length !== 2) { continue; } var jd = Number(jwd[0]); var wd = Number(jwd[1]); var clr = pointColorArr[i % pointColorArr.length]; var graphic = new mars3d.graphic.DivGraphic({ position: Cesium.Cartesian3.fromDegrees(jd, wd), style: { html: '

', // html: '

', // scaleByDistance_far: 1100, // 短半轴 半径 // scaleByDistance_near: 2000, //长半轴 半径 // height: 200, // material: mars3d.MaterialUtil.createMaterialProperty(mars3d.MaterialType.CircleWave, { // color: "#ffff00", // count: 3, // speed: 20, // }), // highlight: { // type: "click", // diffHeight: 600, // material: mars3d.MaterialUtil.createMaterialProperty(mars3d.MaterialType.CircleWave, { // color: "#ffff00", // count: 3, // speed: 20, // }), // }, distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 200000), //按视距距离显示 }, attr: item, }); layer_1001_guokong.addGraphic(graphic); } }); } function addRoadLayer() { //方式2:在创建地球后调用addLayer添加图层(直接new对应type类型的图层类) layer_1006_roadsection = new mars3d.layer.WmsLayer({ pid: 99, name: "上海市道路", type: "wms", url: "http://58.246.27.194:7011/geoserver/konglu_58/wms", layers: "konglu_58:v_test", crs: "EPSG:4326", parameters: { "transparent": "true", "format": "image/png", "sld": "http://127.0.0.1:8080/geoserver/styles/pm10_ten.sld" }, center: { "lat": 31.162801, "lng": 121.543277, "alt": 50000, "heading": 359.2, "pitch": -39.5 }, getFeatureInfoParameters: { feature_count: 10 }, //单击高亮及其样式 highlight: { type: "wallP", diffHeight: 300, material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, { image: "img/textures/fence.png", color: "#ffff00", speed: 10, //速度,建议取值范围1-100 axisY: true, }), }, popup: "all", show: false, flyTo: true }); //单击事件 layer_1006_roadsection.on(mars3d.EventType.click, function (event) { console.log("单击了矢量数据,共" + event.features.length + "条", event); }); map.addLayer(layer_1006_roadsection); } function addMaskShanghai() { //geojson 合肥边界线 geoJsonLayer = new mars3d.layer.GeoJsonLayer({ url: "//data.mars3d.cn/file/geojson/areas/340100.json", mask: true, //标识为遮罩层【重点参数】 symbol: { styleOptions: { fill: true, color: "rgb(2,26,79)", opacity: 0.9, outline: false, outlineColor: "#39E09B", outlineWidth: 8, outlineOpacity: 0.8, arcType: Cesium.ArcType.GEODESIC, clampToGround: true, }, }, }); map.addLayer(geoJsonLayer); } function addGridLayers() { layer_grid_5000 = new mars3d.layer.WmsLayer({ pid: 99, name: "网格图层5000", type: "wms", url: "http://58.246.27.194:7011/geoserver/konglu_58/wms", layers: "konglu_58:vis_grid1000_hour", crs: "EPSG:4326", parameters: { "transparent": "true", "format": "image/png", "sld": "http://127.0.0.1:8080/geoserver/styles/vis_grid1000_5000_co.sld" }, }); map.addLayer(layer_grid_5000); layer_grid_5000.reloadLayers = function (){ layer_grid_5000.options.layers ="konglu_58:vis_grid1000_day"; layer_grid_5000.options.parameters.sld ="http://127.0.0.1:8080/geoserver/styles/"+layer_grid_5000.options.selectedMapStyleOptions+".sld"; layer_grid_5000.options.parameters.viewparams="id1:0;id2:10"; console.log(layer_grid_5000); layer_grid_5000.reload(); } //单击事件 layer_grid_5000.on(mars3d.EventType.click, function (event) { console.log("单击了矢量数据,共" + event.features.length + "条", event); }); } function addFunctionalLayers() { // add mask //addMaskShanghai(); addTDTAnnoLayer(); // 添加业务图层 addguokongLayers(); addRoadLayer(); addWindLayer(); addGridLayers(); } function addWindLayer(dataTime) { //显示高校点 //getWindParametersByTime(dataTime){ $.getJSON("data/getWindParametersByTime.json", { datatime: '2021-09-08 12:00:00', qindex: 'pm25' }, (result) => { console.log(result); layer_wind = new mars3d.layer.CanvasWindLayer({ id: 2001, pid: 99, name: "实时风场", color: "#ffffff", //颜色 frameRate: 20, //每秒刷新次数 speedRate: 60, //风前进速率 particlesNumber: 1000, maxAge: 60, lineWidth: 1, reverseY: true }); layer_wind.show = false; map.addLayer(layer_wind); layer_wind.data = convertWindData(result.data); }); } function convertWindData(arr) { var arrU = []; var arrV = []; var xmin = arr[0].x; var xmax = arr[0].x; var ymin = arr[0].y; var ymax = arr[0].y; // 风向是以y轴正方向为零度顺时针转,0度表示北风。90度表示东风。 // u表示经度方向上的风,u为正,表示西风,从西边吹来的风。 // v表示纬度方向上的风,v为正,表示南风,从南边吹来的风。 for (let i = 0, len = arr.length; i < len; i++) { const item = arr[i]; if (xmin > item.x) { xmin = item.x; } if (xmax < item.x) { xmax = item.x; } if (ymin > item.y) { ymin = item.y; } if (ymax < item.y) { ymax = item.y; } var u = mars3d.WindUtil.getU(item.speed, item.dir); arrU.push(u); var v = mars3d.WindUtil.getV(item.speed, item.dir); arrV.push(v); } var rows = getKeyNumCount(arr, "y"); //计算 行数 var cols = getKeyNumCount(arr, "x"); //计算 列数 return { xmin: xmin, xmax: xmax, ymax: ymax, ymin: ymin, rows: rows, cols: cols, udata: arrU, //横向风速 vdata: arrV, //纵向风速 }; } function getKeyNumCount(arr, key) { var obj = {}; arr.forEach((item) => { obj[item[key]] = true; }); var count = 0; for (let col in obj) { count++; } return count; } function showDetail(layerid, itemCode) { haoutil.msg('单击了:' + layerid + ',' + itemCode); if (mars3d.widget.isActivate("widgetsTS/qyDetailsView/widget.js")) { var detailWiget = mars3d.widget.getClass("widgetsTS/qyDetailsView/widget.js"); detailWiget.showSPJK(); } else { mars3d.widget.activate({ uri: "widgetsTS/qyDetailsView/widget.js", dataQy: itemCode, itemcode: itemCode }); } }