qinbo
2021-09-28 6ef0b98edd9915b321566801a17376a45ef145c4
js/function_1004.js
@@ -1,19 +1,22 @@
"use script"; //开发环境建议开启严格模式
//系统 功能入口
var taxi_data_list;
var data_list_1004;
var data_list_1004_paths = new Map();
var taxi_layer;
function addTaxiLayer(item) {
  var taxi_layer = new mars3d.layer.GraphicLayer({
  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,
    style_selected:item.style_selected,
    style_selected: item.style_selected,
    style_options: item.styleoptions,
    show: true,
    show: item.show,
    onWidget: "widgetsTS/taxi_layer_setting/widget.js",
  });
  map.addLayer(taxi_layer);
@@ -49,17 +52,17 @@
    return html;
  });
  getTaxiListByUserId(taxi_layer);
  getTaxiListFromServerByUserId(taxi_layer);
}
function getTaxiListByUserId(tmpLayer) {
function getTaxiListFromServerByUserId(tmpLayer) {
  setTaxiLayerMapClock();
  $.getJSON(mars3d.global_variables.nodejs_url_predix + "dataapi/Bdata?bid=get_1004_list_by_userid&userid=" + mars3d.global_variables.userid, (result) => {
    taxi_data_list = result.data.result;
    data_list_1004 = result.data.result;
    for (var i = 0, len = result.data.result.length; i < len; i++) {
      let item = result.data.result[i];
      addTaxiPathToLayer(item, tmpLayer);
      getTaxiPathFromServerbySN(item, tmpLayer);
    }
  });
@@ -70,10 +73,58 @@
  map.clock.startTime = Cesium.JulianDate.fromDate(new Date(mars3d.global_variables.queryDataTStart));
  map.clock.currentTime = Cesium.JulianDate.fromDate(new Date(mars3d.global_variables.queryDataTStart));
  map.clock.stopTime = Cesium.JulianDate.fromDate(new Date(mars3d.global_variables.queryDataTEnd));
  map.clock.multiplier = 5.0;
  map.clock.multiplier = 2.0;
  map.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
  var last_time_second = 0;
  map.on(mars3d.EventType.clockTick, function (event) {
    var current_date = new Date(Cesium.JulianDate.toDate(event._currentTime));
    if (current_date.getSeconds() != last_time_second) {
      last_time_second = current_date.getSeconds();
      changeTaxiLayerStyleAndAttr(getFormattedDateTime(current_date));
    }
  });
}
function addTaxiPathToLayer(item, target_layer) {
function changeTaxiLayerStyleAndAttr(current_date) {
  var tmpattr;
  //current_date = "2021-07-01 00:00:32";
  taxi_layer.eachGraphic(function (item) {
    tmpattr = getTaxiAttrFromTimeListData(current_date, data_list_1004_paths.get(item.options.id));
    //console.log(tmpattr);
    if (tmpattr && tmpattr != null) {
      //item.options.attr = tmpattr;
      item.setOptions({
        attr: tmpattr,
        style: {
          label: {
            color: getLayerPointColorByQindexandValue(1004, item._layer.options.style_selected, tmpattr[item._layer.options.style_selected]),
          }
        }
      })
      //item.options.style.label.color = getLayerPointColorByQindexandValue(1004, item._layer.options.style_selected, tmpattr[item._layer.options.style_selected]);
      //console.log('color has been changed.' + item.options.id);
    }
  });
}
function getTaxiAttrFromTimeListData(datetime, datalist) {
  for (var i = 0; i < datalist.length; i++) {
    if (datalist[i]["datatime"] == datetime) {
      return datalist[i];
    }
  }
}
function getTaxiPathFromServerbySN(item, target_layer) {
  $.getJSON(mars3d.global_variables.nodejs_url_predix + "dataapi/Bdata?bid=get_1004_single_path&siteid=" + item["code"], {
    datatime1: mars3d.global_variables.queryDataTStart,
@@ -81,6 +132,8 @@
  }, (result) => {
    if (result.data.result.length > 0) {
      // 保存临时数据,为后续替换颜色做准备。
      data_list_1004_paths.set(result.data.result[0].code, result.data.result);
      var tmpPositionProperty = new Cesium.SampledPositionProperty();
      for (var i = 0, len = result.data.result.length; i < len; i++) {
        let item = result.data.result[i];
@@ -89,9 +142,10 @@
      }
      let graphic = new mars3d.graphic.ModelEntity({
        id: result.data.result[0].code,
        attr: result.data.result[0],
        style: {
          url: "gltf/" + (item["code"]).substring(0, 2) + ".gltf",
          url: "gltf/" + (result.data.result[0]["code"]).substring(0, 2) + ".gltf",
          scale: 0.5,
          minimumPixelSize: 20,
          highlight: {
@@ -102,7 +156,7 @@
          },
          label: {
            //不需要文字时,去掉label配置即可
            text: item["code"],
            text: result.data.result[0]["code"],
            font_size: 16,
            // TODO need to be changed according to qindex color.
            color: "#ff00ff",
@@ -111,7 +165,7 @@
            pixelOffsetY: -20,
            distanceDisplayCondition: true,
            distanceDisplayCondition_far: 50000,
            distanceDisplayCondition_near: 0,
            distanceDisplayCondition_near: 100,
          },
        },
      });
@@ -119,4 +173,21 @@
      target_layer.addGraphic(graphic);
    }
  });
}
function getFormattedDateTime(date) {
  var year = date.getFullYear();//年
  var month = date.getMonth();//月
  var day = date.getDate();//日
  var hours = date.getHours();//时
  var mins = date.getMinutes();//分
  var seconds = date.getSeconds();//秒
  return date.getFullYear() + "-" +
    ((month + 1) > 9 ? (month + 1) : "0" + (month + 1)) + "-" +
    (day > 9 ? day : ("0" + day)) + " " +
    (hours > 9 ? hours : ("0" + hours)) + ":" +
    (mins > 9 ? mins : ("0" + mins)) + ":" +
    (seconds > 9 ? seconds : ("0" + seconds));
}