qinbo
2021-09-26 4876b42b3e559170636fa61e3a7a26e6c5e3c7d6
Merge branch 'master' of http://www.shsening.com:10000/r/template/shanghai
7个文件已修改
1个文件已添加
930 ■■■■■ 已修改文件
config/config.json 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/widget.json 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/getLayerListByUserid.json 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
index.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
js/function.js 626 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
js/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
widgets/manageLayers_style/view.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
widgetsTS/dataTime/widget.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/config.json
@@ -88,7 +88,6 @@
    ],
    "layers": [
      { "id": 50, "name": "辅助图层", "type": "group" },
      { "pid": 50, "type": "graticule", "name": "经纬网" },
      {
        "pid": 50,
        "name": "行政区划界线",
@@ -109,81 +108,6 @@
        "proxy": "//server.mars3d.cn/proxy/",
        "mapSplit": false
      },
      { "id": 60, "name": "地形", "type": "group" },
      { "pid": 60, "type": "terrain", "name": "Cesium地形", "terrain": { "type": "ion" }, "radio": true },
      { "pid": 60, "type": "terrain", "name": "Mars3D地形", "terrain": { "type": "xyz", "url": "{dataServer}/terrain" }, "radio": true },
      {
        "pid": 60,
        "type": "terrain",
        "name": "ArcGIS地形",
        "terrain": { "type": "arcgis", "url": "https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer" },
        "radio": true
      },
      { "pid": 60, "type": "terrain", "name": "无地形", "terrain": { "type": "none" }, "radio": true },
      {
        "pid": 2040,
        "type": "geojson",
        "name": "上海道路",
        "url": "data/roads-gcj.json",
        "symbol": {
          "styleOptions": {
            "color": "#ffffff",
            "width": 2,
            "opacity": 0.8,
            "label": {
              "text": "{name}",
              "position": "center",
              "font_size": 30,
              "color": "#ffffff",
              "outline": true,
              "outlineColor": "#000000",
              "scaleByDistance": true,
              "scaleByDistance_far": 60000000,
              "scaleByDistance_farValue": 0.2,
              "scaleByDistance_near": 1000000,
              "scaleByDistance_nearValue": 1,
              "distanceDisplayCondition": true,
              "distanceDisplayCondition_far": 12000000,
              "distanceDisplayCondition_near": 0
            }
          }
        },
        "show": false,
        "flyTo": true
      },
      { "id": 2040, "pid": 20, "name": "城市白模", "type": "group" },
      {
        "id": 204012,
        "pid": 2040,
        "type": "3dtiles",
        "name": "上海市区",
        "url": "{dataServer}/3dtiles/jzw-shanghai/tileset.json",
        "maximumScreenSpaceError": 4,
        "maximumMemoryUsage": 1024,
        "style": {
          "color": {
            "conditions": [
              ["${floor} >= 200", "rgba(45, 0, 75, 0.5)"],
              ["${floor} >= 100", "rgb(170, 162, 204)"],
              ["${floor} >= 50", "rgb(224, 226, 238)"],
              ["${floor} >= 25", "rgb(252, 230, 200)"],
              ["${floor} >= 10", "rgb(248, 176, 87)"],
              ["${floor} >= 5", "rgb(198, 106, 11)"],
              ["true", "rgb(127, 59, 8)"]
            ]
          }
        },
        "highlight": { "type": "click", "color": "#FFFF00" },
        "popup": [
          { "field": "name", "name": "名称" },
          { "field": "floor", "name": "楼层" }
        ],
        "center": { "lat": 31.257341, "lng": 121.466139, "alt": 2170.8, "heading": 122.2, "pitch": -31.8 }
      },
      { "id": 99, "name": "数据图层", "type": "group" },
      { "id": 1006, "pid": 99, "name": "监测区域", "type": "group" }
    ]
config/widget.json
@@ -51,10 +51,6 @@
    {
      "name": "左上角LOGO",
      "uri": "widgetsTS/logoAndMenu/widget.js"
    },
    {
      "name": "出租车图层",
      "uri": "widgetsTS/taxi_layer/widget.js"
    }
    
  ],
data/getLayerListByUserid.json
New file
@@ -0,0 +1,175 @@
{
    "data": [
        {
            "id": 1001,
            "pid":99,
            "name": "国控点",
            "type": "div",
            "geoname_prefix":"",
            "style_prefix":"",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":true
        },
        {
            "id": 1002,
            "pid":99,
            "name": "微站",
            "type": "wms",
            "geoname_prefix":"vis_weizhan_",
            "style_prefix":"point_weizhan_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 1003,
            "pid":99,
            "name": "监测点",
            "type": "wms",
            "geoname_prefix":"vis_jiance_",
            "style_prefix":"point_jiance_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 1004,
            "pid":99,
            "name": "移动监测点",
            "type": "taxi",
            "geoname_prefix":"",
            "style_prefix":"",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 1005,
            "pid":99,
            "name": "道路路段",
            "type": "wms",
            "geoname_prefix":"vis_roadsection_",
            "style_prefix":"polyline_road_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 100600,
            "pid":1006,
            "name": "机场",
            "type": "wms",
            "geoname_prefix":"vis_region_100600_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 100601,
            "pid":1006,
            "name": "码头",
            "type": "wms",
            "geoname_prefix":"vis_region_100601_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 100602,
            "pid":1006,
            "name": "环线",
            "type": "wms",
            "geoname_prefix":"vis_region_100602_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 100603,
            "pid":1006,
            "name": "工业园区",
            "type": "wms",
            "geoname_prefix":"vis_region_100603_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 100604,
            "pid":1006,
            "name": "进博会",
            "type": "wms",
            "geoname_prefix":"vis_region_100604_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 100605,
            "pid":1006,
            "name": "边界",
            "type": "wms",
            "geoname_prefix":"vis_region_100605_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 100607,
            "pid":1006,
            "name": "商圈",
            "type": "wms",
            "geoname_prefix":"vis_region_100607_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 1006010,
            "pid":1006,
            "name": "行政区",
            "type": "wms",
            "geoname_prefix":"vis_region_100610_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 100611,
            "pid":1006,
            "name": "街道",
            "type": "wms",
            "geoname_prefix":"vis_region_100611_",
            "style_prefix":"polygon_region_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 3002,
            "pid":1006,
            "name": "网格1000米",
            "type": "wms",
            "geoname_prefix":"vis_grid1000_",
            "style_prefix":"vis_grid100_1000_5000_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 3003,
            "pid":1006,
            "name": "网格5000米",
            "type": "wms",
            "geoname_prefix":"vis_grid5000_",
            "style_prefix":"vis_grid100_1000_5000_",
            "styleoptions": ["pm25", "pm10", "no", "no2", "nox", "co"],
            "show":false
        },
        {
            "id": 2001,
            "pid":99,
            "name": "实时风场",
            "type": "wind",
            "geoname_prefix":"",
            "style_prefix":"",
            "styleoptions": [],
            "show":false,
            "color":"#ffffff"
        }
    ]
}
index.html
@@ -27,7 +27,7 @@
      type="text/javascript"
      src="lib/include-lib.js?time=20210803"
      libpath="lib/"
      include="jquery,jquery.range,jedate,bootstrap,bootstrap-checkbox,font-awesome,web-icons,layer,haoutil,localforage,nprogress,toastr,admui,turf,mars3d,mars3d-widget,mars3d-wind"
      include="jquery,jquery.range,bootstrap,bootstrap-checkbox,font-awesome,web-icons,layer,haoutil,localforage,nprogress,toastr,admui,turf,mars3d,mars3d-widget,mars3d-wind"
    ></script>
    <link href="css/style.css?time=20210803" rel="stylesheet" />
    <link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
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);
  map.addLayer(layer_1002_weizhan);
    layer_wind.data = convertWindData(result.data);
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
  });
}
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"); //计算 列数
function addRoadLayer() {
  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;
}
<<<<<<< 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();
    }
  });
  //单击事件
  layer_100607_quan.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event);
=======
      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,
  });
  map.addLayer(layer_100607_quan);
      layer_1001_guokong.addGraphic(graphic);
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
}
  });
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
    });
  }
js/index.js
@@ -67,13 +67,11 @@
  //创建三维地球场景
  map = new mars3d.Map("mars3dContainer", mapOptions);
  addFunctionalLayers();
  //构造widget
  initWidget(map);
  initLayersByUserid();
  //如果有xyz传参,进行定位
  if (haoutil.isutil.isNotNull(request.x) && haoutil.isutil.isNotNull(request.y)) {
    map.setCameraView(request, { duration: 0, isWgs84: true });
widgets/manageLayers_style/view.js
@@ -243,7 +243,7 @@
  // add map style selection radio
  if (!layer.hasOpacity && !layer.options.hasMapStyleOptions) {
  if (!layer.hasOpacity && !layer.options.style_options) {
    return;
  }
@@ -271,15 +271,15 @@
      },
    });
  }
  if (layer.options.hasMapStyleOptions) {
  if (layer.options.style_options) {
    var view = $("#" + tNode.tId);
    var radio_html = '<div id="' + tNode.tId + '_style" style="color: white;">';
    let item = layer.options.hasMapStyleOptions;
    let item = layer.options.style_options;
    for (var i = 0, len = item.length; i < len; i++) {
      radio_html += '<span class="button level1 switch center_docu" ></span><label><input type="radio" name="' + tNode.tId + '_style" value="'+item[i]+'" ' + (item[i] == layer.options.selectedMapStyleOptions ? "checked" : "") + '/>' + item[i].toUpperCase() + '</label></br>';
      radio_html += '<span class="button level1 switch center_docu" ></span><label><input type="radio" name="' + tNode.tId + '_style" value="'+item[i]+'" ' + (i == 0 ? "checked" : "") + '/>' + item[i].toUpperCase() + '</label></br>';
    }
    radio_html += '</div>';
@@ -292,7 +292,16 @@
    $('input[type=radio][name=' + tNode.tId + '_style]').change(function () {
      var layer = layersObj[tNode.uuid];
<<<<<<< HEAD
      layer.options.reloadLayers(this.value);
=======
      if (layer.options.type =='wms'){
        layer.options.parameters.styles = layer.options.style_prefix+this.value;
        layer.reload();
      }
      //TODO
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
    });
  }
widgetsTS/dataTime/widget.js
@@ -29,15 +29,6 @@
  return dateType;
}
function reloadTop10(){
  var leftAndRight = mars3d.widget.getClass("widgetsTS/widget_Overall/widget.js");
  if(leftAndRight){
    if(leftAndRight.viewWindowLeft){
      leftAndRight.viewWindowLeft.loadTop10();
    }
  }
}
function getAppDateTime(){
  return $('#appDate').val();
}
@@ -65,9 +56,11 @@
      this.defaultDateTime = getDefaultDateTime();
      // 初始化 参数
      let request = haoutil.system.getRequest();
      if (window.top) {
        request = $.extend(request, haoutil.system.getRequest(window.top));
      }
<<<<<<< HEAD
      console.log( mars3d.global_variables);
      mars3d.global_variables = { geoserver_url_predix:'http://58.246.27.194:7011/',userid: request.userid || 2, queryDataType: 'hour' };
      mars3d.global_variables.queryDataTStart = this.defaultDateTime;
@@ -88,10 +81,11 @@
      mars3d.global_variables.layer1000_conifg={name:'网格图层1000',styleoptions:['pm25','pm10','no','no2','nox','co'],selectedstyle:'pm25',show:false};
      mars3d.global_variables.layer5000_conifg={name:'网格图层5000',styleoptions:['pm25','pm10','no','no2','nox','co'],selectedstyle:'pm25',show:false};
      console.log( mars3d.global_variables);
=======
      mars3d.global_variables.userid = request?.userid || 2;
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
    }
    //每个窗口创建完成后调用
    winCreateOK(opt, result) {
@@ -126,6 +120,7 @@
      }).on("changeDate", function () {
        mars3d.global_variables.queryDataTStart = $('#appDate').val() + " 00:00:00";
<<<<<<< HEAD
        console.log(mars3d.global_variables.queryDataTStart);
        // 在 function.js 中定义的 function
@@ -149,6 +144,8 @@
        reloadTop10();
=======
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
        reLoadLayers();
        // refreshWidgets();
@@ -171,6 +168,7 @@
      }).on("changeDate", function () {
        mars3d.global_variables.queryDataTStart = $('#appDateHour').val();
<<<<<<< HEAD
        console.log(mars3d.global_variables.queryDataTStart);
        // 在 function.js 中定义的 function
        addguokongLayers();
@@ -195,6 +193,10 @@
        // reLoadLayers();
        // refreshWidgets();
=======
        reLoadLayers();
        refreshWidgets();
>>>>>>> ac8a0efbbe8ae8ccba1bb7ecfb8098b780eca010
      });
      $("#appDateHour").datetimepicker("setDate", new Date(this.defaultDateTime));
      $('#appDateHour').datetimepicker('setEndDate', new Date(this.defaultDateTime));