wangzhibo
2021-09-08 ed0cb1e53f0f26fb31f0b9f5fded71d9e924796b
add wind layer
1个文件已修改
149 ■■■■■ 已修改文件
js/function.js 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
js/function.js
@@ -20,6 +20,7 @@
var layer_1006_roadsection;
var layer_1007_jiedao;
var layer_wind;
function getDefaultDateTime() {
@@ -82,8 +83,8 @@
      "<br />办学层次:" +
      item["办学层次"] +
      "<br />王牌专业:" +
      item["王牌专业"]+
      "<br /><br /><p><a href='#' onclick='javascript:showDetail(1001,\""+item["高校名称"]+"\")' >详细信息</a></p>";
      item["王牌专业"] +
      "<br /><br /><p><a href='#' onclick='javascript:showDetail(1001,\"" + item["高校名称"] + "\")' >详细信息</a></p>";
    return html;
  });
@@ -162,27 +163,27 @@
}
function addMaskShanghai(){
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,
  //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);
  });
  map.addLayer(geoJsonLayer);
}
@@ -202,27 +203,117 @@
  addRoadLayer();
  addWindLayer();
}
function showDetail(layerid,itemCode){
    haoutil.msg('单击了:'+layerid+','+itemCode);
function addWindLayer(dataTime) {
    if (mars3d.widget.isActivate("widgetsTS/qyDetailsView/widget.js")){
  //显示高校点
  //getWindParametersByTime(dataTime){
  $.getJSON("http://127.0.0.1:800/shanghai/data/getWindParametersByTime.json", { datatime: '2021-09-08 10:00:00' }, (result) => {
      var detailWiget = mars3d.widget.getClass("widgetsTS/qyDetailsView/widget.js");
    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();
    detailWiget.showSPJK();
    }else{
  } else {
    mars3d.widget.activate({
      uri: "widgetsTS/qyDetailsView/widget.js",
      dataQy: itemCode,
    });
  }
}