"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 addfunctionLayers(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: '',
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();
// 添加业务图层
addfunctionLayers();
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
});
}
}