Cesium初始化场景类

/**
 * 场景初始化选项
 * @param { HTMLDivElement | string } container 为“三维场景容器”的元素或元素ID
 * @returns viewer实例对象
 */
export default (container) => {
  const skyBoxBaseUrl = "/resource/image/skybox/";

  const viewer = new Cesium.Viewer(container, {
    baseLayerPicker: false,
    fullscreenButton: false,
    geocoder: false,
    homeButton: false,
    infoBox: false,
    sceneModePicker: false,
    selectionIndicator: false,
    navigationHelpButton: false,
    animation: false,
    timeline: true,
    vrButton: false,
    shouldAnimate: false,
    camera: (Cesium.Camera.DEFAULT_VIEW_RECTANGLE =
      Cesium.Rectangle.fromDegrees(100.0, -10.0, 130.0, 60.0)),
    imageryProvider: new Cesium.SingleTileImageryProvider({
      url: "/resource/image/layer/world5km.webp",
    }),
    skyBox: new Cesium.SkyBox({
      sources: {
        positiveX: skyBoxBaseUrl + "left.webp",
        negativeX: skyBoxBaseUrl + "right.webp",

        positiveY: skyBoxBaseUrl + "down.webp",
        negativeY: skyBoxBaseUrl + "up.webp",

        positiveZ: skyBoxBaseUrl + "front.webp",
        negativeZ: skyBoxBaseUrl + "back.webp",
      },
    }),
  });

  viewer.cesiumWidget.creditContainer.style.display = "none";

  const scene = viewer.scene;
  scene.postProcessStages.fxaa.enabled = true;
  scene.globe.showGroundAtmosphere = false;
  scene.globe.enableLighting = true;
  scene.sunBloom = false;
  scene.fog.enabled = false;
  scene.skyAtmosphere.show = false;

  // 禁止时间轴缩放滚动
  // viewer.timeline.zoomFrom = null;
  // 根据屏幕分辨率进行抗锯齿处理
  viewer.scene.fxaa = false;
  viewer.scene.postProcessStages.fxaa.enabled = true;
  var supportsImageRenderingPixelated =
    viewer.cesiumWidget._supportsImageRenderingPixelated;
  if (supportsImageRenderingPixelated) {
    var vtxf_dpr = window.devicePixelRatio;
    while (vtxf_dpr >= 2.0) {
      vtxf_dpr /= 2.0;
    }
    viewer.resolutionScale = vtxf_dpr;
  }

  function DateTimeFormatter(datetime, viewModel, ignoredate) {
    var julianDT = new Cesium.JulianDate();
    Cesium.JulianDate.addHours(datetime, 8, julianDT);
    var gregorianDT = Cesium.JulianDate.toGregorianDate(julianDT);
    var objDT;
    if (ignoredate) {
      objDT = '';
    } else {
      objDT = new Date(gregorianDT.year, gregorianDT.month - 1, gregorianDT.day);
      objDT = gregorianDT.year + '-' + objDT.toLocaleString('zh-cn', { month: 'short' }).split('月').join('-') + gregorianDT.day + ' ';
      if (viewModel || gregorianDT.hour + gregorianDT.minute === 0) {
        return objDT
        objDT += '';
      }
    }
    let hour, minute, second;


    if (gregorianDT.hour < 10) {
      hour = `0${gregorianDT.hour}`
    } else {
      hour = gregorianDT.hour
    }
    if (gregorianDT.minute < 10) {
      minute = `0${gregorianDT.minute}`
    } else {
      minute = gregorianDT.minute
    }
    if (gregorianDT.second < 10) {
      second = `0${gregorianDT.second}`
    } else {
      second = gregorianDT.second
    }

    // return objDT + Cesium.sprintf('%02d:%02d:%02d', gregorianDT.hour, gregorianDT.minute, gregorianDT.second);
    return objDT + hour + ":" + minute + ":" + second;
  }
  viewer.timeline.makeLabel = DateTimeFormatter;

  return viewer;
};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值