qinbo
2021-09-26 4876b42b3e559170636fa61e3a7a26e6c5e3c7d6
js/function.js
@@ -1,42 +1,6 @@
"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_roadsection;
var layer_1006_region;
var layer_100600_jichang;
var layer_100601_matou;
var layer_100602_huanxian;
var layer_100603_yuanqu;
var layer_100604_jinbo;
var layer_100605_bianjie;
var layer_100607_quan;
var layer_100610_qu;
var layer_100611_jiedao;
var layer_wind;
var layer_grid_100;
var layer_grid_1000;
var layer_grid_5000;
function getDefaultDateTime() {
  var date = new Date;
  date.setHours(date.getHours() - 2);
@@ -49,6 +13,7 @@
    (day > 9 ? day : ("0" + day)) + " " +
    (hours > 9 ? hours : ("0" + hours)) + ":00:00";
}
<<<<<<< HEAD
// console.log(mars3d.global_variables);
mars3d.global_variables = { geoserver_url_predix: 'http://58.246.27.194:7011/', userid: 2, queryDataType: 'hour' };
mars3d.global_variables.queryDataTStart = getDefaultDateTime();
@@ -74,30 +39,88 @@
//     addJiedaoLayer();
//   }
// };
=======
mars3d.global_variables = { geoserver_url_predix: 'http://58.246.27.194:7011/', nodejs_url_predix: 'http://58.246.27.194:7012/', userid: 2, queryDataType: 'hour' };
mars3d.global_variables.queryDataTStart = getDefaultDateTime();
mars3d.global_variables.queryDataTEnd = getDefaultDateTime();
function addTDTAnnoLayer() {
  Img_annoTileLayer = new mars3d.layer.TdtLayer({
    name: "影像注记",
    layer: "img_z",
    key: mars3d.Token.tiandituArr,
function initLayersByUserid() {
  //addMaskShanghai();
  addTDTAnnoLayer();
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  $.getJSON("data/getLayerListByUserid.json", { userid: mars3d.global_variables.userid }, (result) => {
    result.data.forEach((item) => {
      if ([item['type']] == 'wms') {
        addWMSLayer(item);
      } else if ([item['type']] == 'wind') {
        console.log('wind')
        addWindLayer(item);
      } else if ([item['type']] == 'div') {
        addGuokongLayer(item);
      } else if ([item['type']] == 'taxi') {
        addTaxiLayer(item);
      }
    });
  });
  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) {
function addWMSLayer(item) {
  var wmsLyer = new mars3d.layer.WmsLayer({
    id: item.id,
    pid: item.pid,
    name: item.name,
    type: "wms",
    url: mars3d.global_variables.geoserver_url_predix + "/geoserver/konglu_58/wms",
    layers: "konglu_58:" + item.geoname_prefix + mars3d.global_variables.queryDataType,
    crs: "EPSG:4326",
    parameters: {
      "styles": item.style_prefix + item.styleoptions[0],
      "transparent": "true",
      "format": "image/png",
      "viewparams": "userid:" + mars3d.global_variables.userid + ";datatime:" + mars3d.global_variables.queryDataTStart
    },
    center: { "lat": 30.487351, "lng": 121.613269, "alt": 54033, "heading": 359, "pitch": -40 },
    noCenter: true,
    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: item.show,
    geoname_prefix: item.geoname_prefix,
    style_prefix: item.style_prefix,
    style_options: item.styleoptions,
    flyTo: false
  });
  //单击事件
  wmsLyer.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
  });
  map.addLayer(wmsLyer);
}
function addGuokongLayer(item) {
<<<<<<< HEAD
  let Layer = map.getLayerById(1001);
  if (Layer) {
    mars3d.global_variables.layer1002_conifg.show = Layer.options.show;
@@ -119,22 +142,25 @@
      mars3d.global_variables.layer1001_conifg.selectedstyle = new_style;
      addguokongLayers();
    }
=======
  var guokongLayer = new mars3d.layer.DivLayer({
    id: item.id,
    pid: item.pid, //图层管理 中使用,父节点id
    name: item.name,
    style_options: item.styleoptions
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  });
  map.addLayer(layer_1001_guokong);
  map.addLayer(guokongLayer);
  layer_1001_guokong.on(mars3d.EventType.click, function (event) {
  guokongLayer.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) {
  guokongLayer.bindPopup(function (event) {
    let item = event.graphic?.attr;
    var html =
      "站点名称:" +
@@ -167,8 +193,6 @@
        style: {
          color: clr,
          heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
          // html: '<div class="mars3d-animation-point" style="color:' + clr + ';"><p></p></div>',
          // html: '<div><p><img src="img/marker/mark1.png"></p></div>',
          highlight: {
            type: "divLightPoint",
            diffHeight: 600,
@@ -183,14 +207,15 @@
        show: true,
        attr: item,
      });
      layer_1001_guokong.addGraphic(graphic);
      guokongLayer.addGraphic(graphic);
    }
  });
}
function addWeizhanLayer() {
function addWindLayer(item) {
<<<<<<< HEAD
  let Layer = map.getLayerById(1002);
  if (Layer) {
    mars3d.global_variables.layer1002_conifg.show = Layer.options.show;
@@ -246,14 +271,41 @@
  //单击事件
  layer_1002_weizhan.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
=======
  $.getJSON("data/getWindParametersByTime.json", { datatype: mars3d.global_variables.queryDataType, datatime: mars3d.global_variables.queryDataTStart }, (result) => {
    console.log(result);
    var layer_wind = new mars3d.layer.CanvasWindLayer({
      id: item.id,
      pid: item.pid,
      name: item.name,
      color: item.color,
      frameRate: 20, //每秒刷新次数
      speedRate: 60, //风前进速率
      particlesNumber: 1000,
      maxAge: 60,
      lineWidth: 1,
      reverseY: true
    });
    layer_wind.show = item.show;
    map.addLayer(layer_wind);
    layer_wind.data = convertWindData(result.data);
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  });
  map.addLayer(layer_1002_weizhan);
}
function addJianceLayer() {
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;
<<<<<<< HEAD
  let Layer = map.getLayerById(1003);
  if (Layer) {
    mars3d.global_variables.layer1002_conifg.show = Layer.options.show;
@@ -305,19 +357,62 @@
      addJianceLayer();
    }
  });
=======
  // 风向是以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;
    }
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  //单击事件
  layer_1003_jiance.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
  });
    var u = mars3d.WindUtil.getU(item.speed, item.dir);
    arrU.push(u);
  map.addLayer(layer_1003_jiance);
    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;
  });
function addRoadLayer() {
  var count = 0;
  for (let col in obj) {
    count++;
  }
  return count;
}
<<<<<<< HEAD
  let Layer = map.getLayerById(1005);
  if (Layer) {
    mars3d.global_variables.layer1002_conifg.show = Layer.options.show;
@@ -368,21 +463,126 @@
      mars3d.global_variables.layer1005_conifg.selectedstyle = new_style;
      addRoadLayer();
    }
=======
function addTaxiLayer(item) {
  map.clock.shouldAnimate = true;
  map.clock.startTime = Cesium.JulianDate.fromDate(new Date("2021-07-01 10:00:00"));
  map.clock.currentTime = Cesium.JulianDate.fromDate(new Date("2021-07-01 10:00:00"));
  map.clock.stopTime = Cesium.JulianDate.fromDate(new Date("2021-07-01 10:15:00"));
  map.clock.multiplier = 5.0;
  map.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
  var taxi_layer = new mars3d.layer.GraphicLayer({
    id: item.id,
    name: item.name,
    pid: item.pid, //图层管理 中使用,父节点id
    center: { "lat": 30.62156, "lng": 121.44918, "alt": 48716, "heading": 359, "pitch": -40 },
    noCenter: true,
    show: true,
    onWidget: "widgetsTS/taxi_layer_setting/widget.js",
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  });
  map.addLayer(taxi_layer);
  taxi_layer.on(mars3d.EventType.click, function (event) {
    console.log("监听layer,单击了矢量对象", event);
    var item = event.graphic?.attr;
  });
  taxi_layer.bindPopup(function (event) {
    let item = event.graphic?.attr;
    var html =
      "<br/>类型:&nbsp;" +
        item["code"].substring(0, 2) == "BS" ? "公交车" : "出租车" +
        "<br />车辆编号:&nbsp;" +
        item["code"] +
        "<br/>数据时间:&nbsp;" +
        item["datatime"] +
        "<br />瞬时车速:&nbsp;&nbsp;&nbsp;" +
        item["speed"] + "&nbsp;(km/h)" +
        "<br />粉尘PM2.5:&nbsp;" +
        item["pm25"] + "&nbsp;(ug/m3)" +
        "<br />粉尘PM10:&nbsp;&nbsp;" +
        item["pm10"] + "&nbsp;(ug/m3)" +
        "<br />NO浓度:&nbsp;&nbsp;&nbsp;" +
        item["no"] + "&nbsp;(ug/m3)" +
        "<br />NO2浓度:&nbsp;&nbsp;" +
        item["no2"] + "&nbsp;(ug/m3)" +
        "<br />NO+NO2浓度:&nbsp;" +
        item["nox"] + "&nbsp;(ug/m3)" +
        "<br />CO浓度值:&nbsp;&nbsp;&nbsp;&nbsp;" +
        item["co"] + "&nbsp;&nbsp;(mg/m3)" +
        "<br /><br /><p><a href='#' onclick='javascript:showDetail(1001,\"" + item["code"] + "\")' ><span style='color:#ff00ff'>历史轨迹回放</span></a></p>";
    return html;
  });
  //单击事件
  layer_1005_roadsection.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
  $.getJSON("http://58.246.27.194:7012/dataapi/Bdata?bid=get_1004_list_by_userid&userid=2", (result) => {
    for (var i = 0, len = result.data.result.length; i < len; i++) {
      let item = result.data.result[i];
      addItemToLayer(item, taxi_layer);
    }
  });
  map.addLayer(layer_1005_roadsection);
}
function addItemToLayer(item, target_layer) {
  $.getJSON("http://58.246.27.194:7012/dataapi/Bdata?bid=get_1004_single_path&siteid=" + item["code"], {
    datatime1: "2021-07-01 10:00:00",
    datatime2: "2021-07-01 10:15:00"
  }, (result) => {
    if (result.data.result.length > 0) {
      var tmpPositionProperty = new Cesium.SampledPositionProperty();
      for (var i = 0, len = result.data.result.length; i < len; i++) {
        let item = result.data.result[i];
        //console.log(item);
        tmpPositionProperty.addSample(Cesium.JulianDate.fromDate(new Date(item["datatime"])), Cesium.Cartesian3.fromDegrees(item["lon"], item["lat"], 0.2))
      }
function addJichangLayer() {
      let graphic = new mars3d.graphic.ModelEntity({
        attr: result.data.result[0],
        style: {
          url: "gltf/" + (item["code"]).substring(0, 2) + ".gltf",
          scale: 0.5,
          minimumPixelSize: 20,
          highlight: {
            type: mars3d.EventType.click,
            silhouette: true,
            silhouetteColor: "#ff0000",
            silhouetteSize: 4,
          },
          label: {
            //不需要文字时,去掉label配置即可
            text: item["code"],
            font_size: 16,
            // TODO need to be changed according to qindex color.
            color: "#ff00ff",
            outline: true,
            outlineColor: "#000000",
            pixelOffsetY: -20,
            distanceDisplayCondition: true,
            distanceDisplayCondition_far: 50000,
            distanceDisplayCondition_near: 0,
          },
        },
      });
      graphic.position = tmpPositionProperty;
      target_layer.addGraphic(graphic);
    }
  });
}
function reLoadLayers() {
  var layers = map.getLayers({ layers: true });
  layers.forEach((layer) => {
    console.log(layer.name+":"+layer.type);
<<<<<<< HEAD
  let Layer = map.getLayerById(100600);
  if (Layer) {
    mars3d.global_variables.layer1002_conifg.show = Layer.options.show;
@@ -497,16 +697,20 @@
      addMatouLayer();
    }
  });
=======
    if ([layer.type] == 'wms') {
  //单击事件
  layer_100601_matou.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
      layer.options.layers = "konglu_58:" + layer.options.geoname_prefix + mars3d.global_variables.queryDataType;
      layer.options.parameters.viewparams = "userid:" + mars3d.global_variables.userid + ";datatime:" + mars3d.global_variables.queryDataTStart;
      layer.reload();
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
    }
  });
  map.addLayer(layer_100601_matou);
}
<<<<<<< HEAD
function addHuanxianLayer() {
  let Layer = map.getLayerById(100602);
@@ -567,10 +771,15 @@
  });
  map.addLayer(layer_100602_huanxian);
=======
function refreshWidgets() {
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
}
function addTDTAnnoLayer() {
<<<<<<< HEAD
function addYuanyuLayer() {
  let Layer = map.getLayerById(100603);
@@ -623,19 +832,30 @@
      mars3d.global_variables.layer100603_conifg.selectedstyle = new_style;
      addYuanyuLayer();
    }
=======
  Img_annoTileLayer = new mars3d.layer.TdtLayer({
    name: "影像注记",
    layer: "img_z",
    key: mars3d.Token.tiandituArr,
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  });
  Img_annoTileLayer.show = false;
  Img_annoTileLayer.pid = 50;
  map.addLayer(Img_annoTileLayer);
  //单击事件
  layer_100603_yuanqu.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
  Vec_annoTileLayer = new mars3d.layer.TdtLayer({
    name: "矢量图注记",
    layer: "vec_z",
    key: mars3d.Token.tiandituArr,
  });
  map.addLayer(layer_100603_yuanqu);
  Vec_annoTileLayer.show = false;
  Vec_annoTileLayer.pid = 50;
  map.addLayer(Vec_annoTileLayer);
}
function addJinboLayer() {
function addfunctionLayers() {
<<<<<<< HEAD
  let Layer = map.getLayerById(100604);
  if (Layer) {
    mars3d.global_variables.layer1002_conifg.show = Layer.options.show;
@@ -686,19 +906,25 @@
      mars3d.global_variables.layer100604_conifg.selectedstyle = new_style;
      addJinboLayer();
    }
=======
  layer_1001_guokong = new mars3d.layer.DivLayer({
    name: '国控点',
    pid: 99, //图层管理 中使用,父节点id
    show: false
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  });
  map.addLayer(layer_1001_guokong);
  //单击事件
  layer_100604_jinbo.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
  });
  layer_1001_guokong.on(mars3d.EventType.click, function (event) {
    console.log("监听layer,单击了矢量对象", event);
  map.addLayer(layer_100604_jinbo);
    console.log(event.graphic?.attr)
}
    var item = event.graphic?.attr;
function addBianjieLayer() {
    //haoutil.msg('单击了:' + item['高校名称'])
<<<<<<< HEAD
  let Layer = map.getLayerById(100605);
  if (Layer) {
    mars3d.global_variables.layer1002_conifg.show = Layer.options.show;
@@ -749,19 +975,44 @@
      mars3d.global_variables.layer100605_conifg.selectedstyle = new_style;
      addBianjieLayer();
    }
=======
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  });
  //单击事件
  layer_100605_bianjie.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
  layer_1001_guokong.bindPopup(function (event) {
    let item = event.graphic?.attr;
    var html =
      "高校名称:" +
      item["高校名称"] +
      "<br />所属地区:" +
      item["地区"] +
      "<br />主管部门:" +
      item["主管部门"] +
      "<br />办学层次:" +
      item["办学层次"] +
      "<br />王牌专业:" +
      item["王牌专业"] +
      "<br /><br /><p><a href='#' onclick='javascript:showDetail(1001,\"" + item["高校名称"] + "\")' >详细信息</a></p>";
    return html;
  });
  map.addLayer(layer_100605_bianjie);
}
  // add 国控点
  //显示高校点
  $.getJSON("//data.mars3d.cn/file/apidemo/gaoxiao.json", (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;
      }
function addQuanLayer() {
      var jd = Number(jwd[0]);
      var wd = Number(jwd[1]);
      var clr = pointColorArr[i % pointColorArr.length];
<<<<<<< HEAD
  let Layer = map.getLayerById(100607);
  if (Layer) {
    mars3d.global_variables.layer1002_conifg.show = Layer.options.show;
@@ -813,18 +1064,24 @@
      addQuanLayer();
    }
  });
=======
      var graphic = new mars3d.graphic.DivGraphic({
        position: Cesium.Cartesian3.fromDegrees(jd, wd),
        style: {
          html: '<div class="mars3d-animation-point" style="color:' + clr + ';"><p></p></div>',
          //html: '<div><p><img src="img/marker/mark1.png"></p></div>',
          distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 200000), //按视距距离显示
        },
        attr: item,
      });
      layer_1001_guokong.addGraphic(graphic);
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  //单击事件
  layer_100607_quan.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
    }
  });
  map.addLayer(layer_100607_quan);
}
function addXinzhenquLayer() {
function addRoadLayer() {
  let Layer = map.getLayerById(100610);
  if (Layer) {
@@ -835,6 +1092,7 @@
  };
  //方式2:在创建地球后调用addLayer添加图层(直接new对应type类型的图层类)
<<<<<<< HEAD
  layer_100610_qu = new mars3d.layer.WmsLayer({
    id:100610,
    pid: 1006,
@@ -851,6 +1109,21 @@
    },
    // center: { "lat": 30.594533, "lng": 121.581681, "alt": 93405, "heading": 359, "pitch": -61 },
=======
  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:vis_region_100601_hour",
    crs: "EPSG:4326",
    parameters: {
      "transparent": "true",
      "format": "image/png"
    },
    center: { "lat": 31.162801, "lng": 121.543277, "alt": 50000, "heading": 359.2, "pitch": -39.5 },
    "noCenter": true,
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
    getFeatureInfoParameters: {
      feature_count: 10
    },
@@ -866,6 +1139,7 @@
      }),
    },
    popup: "all",
<<<<<<< HEAD
    show: mars3d.global_variables.layer100610_conifg.show,
    selectedMapStyleOptions: mars3d.global_variables.layer100610_conifg.selectedstyle,
    hasMapStyleOptions:mars3d.global_variables.layer100610_conifg.styleoptions,
@@ -940,23 +1214,23 @@
      addJiedaoLayer();
    }
=======
    show: false,
    flyTo: false
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  });
  console.log(layer_100611_jiedao.show);
  //单击事件
  layer_100611_jiedao.on(mars3d.EventType.click, function (event) {
  layer_1006_roadsection.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
  });
  map.addLayer(layer_100611_jiedao);
  map.addLayer(layer_1006_roadsection);
}
/////////
function addMaskShanghai() {
  //geojson 合肥边界线
@@ -981,6 +1255,7 @@
}
<<<<<<< HEAD
function addGrid5Layers() {
  let Layer = map.getLayerById(5000);
@@ -1097,122 +1372,12 @@
}
=======
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
function addFunctionalLayers() {
  // add mask
  //addMaskShanghai();
  addTDTAnnoLayer();
  // 添加业务图层
  addguokongLayers();
  addWeizhanLayer();
  addJianceLayer();
  addRoadLayer();
  // addRegionLayer();
  addJichangLayer();
  addMatouLayer();
  addHuanxianLayer();
  addYuanyuLayer();
  addJinboLayer();
  addBianjieLayer();
  addQuanLayer();
  addXinzhenquLayer();
  addJiedaoLayer();
  addWindLayer();
  addGrid5Layers();
  addGrid1Layers();
}
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) {
@@ -1230,7 +1395,6 @@
    mars3d.widget.activate({
      uri: "widgetsTS/qyDetailsView/widget.js",
      dataQy: itemCode,
      itemcode: itemCode
    });
  }