nnnjjj123
2020-11-17 e7bc0b68e57e1f2824a71873bc4ef22eb1e65084
widgets/Basemap/Widget.js
@@ -3,80 +3,125 @@
// 模块描述: 底图
///////////////////////////////////////////////////////////////////////////
define([
      'dojo/_base/declare',
      'dojo/_base/lang',
      'dojo/_base/array',
      'dojo/_base/html',
      'dojo/topic',
      'jimu/BaseWidget',
      'jimu/utils',
      'jimu/css!libs/zTree_v3/css/zTreeStyle/zTreeStyle.css',
      'libs/zTree_v3/js/jquery.ztree.all'
   ],
   function (declare,
      lang,
      array,
      html,
      topic,
      BaseWidget,
      aspect,
      string,
      utils
   ) {
      return declare([BaseWidget], {
         baseClass: 'jimu-widget-Basemap',
         name: 'Basemap',
         layers:{},
         startup: function () {
            // 暴露在外的接口
            topic.subscribe("closeMap", lang.hitch(this, this.closeBaseMap));
            this.inherited(arguments);
            $('.jimu-widget-Basemap span').click(function () {
               topic.publish('closeTool', this.name);
               topic.publish('closeZtree', this.name);
               if ($('.cesium-baseLayerPicker-dropDown').hasClass('cesium-baseLayerPicker-dropDown-visible') == true) {
                  $('.cesium-baseLayerPicker-dropDown').removeClass('cesium-baseLayerPicker-dropDown-visible')
               } else {
                  $('.cesium-baseLayerPicker-dropDown').addClass('cesium-baseLayerPicker-dropDown-visible')
               }
            })
         },
         closeBaseMap: function (item) {
            if (item != this.name) {
               if ($('.cesium-baseLayerPicker-dropDown').hasClass('cesium-baseLayerPicker-dropDown-visible') == true) {
                  $('.cesium-baseLayerPicker-dropDown').removeClass('cesium-baseLayerPicker-dropDown-visible')
               }
   'dojo/_base/declare',
   'dojo/_base/lang',
   'dojo/_base/array',
   'dojo/_base/html',
   'dojo/topic',
   'dojo/on',
   'jimu/BaseWidget',
   'jimu/utils',
   'jimu/css!libs/zTree_v3/css/zTreeStyle/zTreeStyle.css',
   'libs/zTree_v3/js/jquery.ztree.all'
],
function (declare,
   lang,
   array,
   html,
   topic,
   on,
   BaseWidget,
   aspect,
   string,
   utils
) {
   return declare([BaseWidget], {
      baseClass: 'jimu-widget-Basemap',
      name: 'Basemap',
      tileset:null,
      startup: function () {
         // 暴露在外的接口
         topic.subscribe("closeMap", lang.hitch(this, this.closeBaseMap));
         this.inherited(arguments);
         $(".cesium-baseLayerPicker-sectionTitle").eq(0).html("底图");
         $(".cesium-baseLayerPicker-sectionTitle").eq(1).html("地形");
         $('.jimu-widget-Basemap span').click(function () {
            topic.publish('closeTool', this.name);
            topic.publish('closeZtree', this.name);
            if ($('.cesium-baseLayerPicker-dropDown').hasClass('cesium-baseLayerPicker-dropDown-visible') == true) {
               $('.cesium-baseLayerPicker-dropDown').removeClass('cesium-baseLayerPicker-dropDown-visible')
            } else {
               $('.cesium-baseLayerPicker-dropDown').addClass('cesium-baseLayerPicker-dropDown-visible')
            }
         },
         });
         onOpen: function () {
            //面板打开的时候触发 (when open this panel trigger)
         },
         //加载3DTile
         this.tileset = this.map.scene.primitives.add(
            new Cesium.Cesium3DTileset({
            "url": "http://223.83.52.4:81/data/qx1/tileset.json",
            "maximumScreenSpaceError": 16,
            "preferLeaves":true,
            "maximumNumberOfLoadedTiles": 2000,
            "luminanceAtZenith": 0.8
         }));
         function zoomToTileset(tileset) {
            var cartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center);
            var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);
            var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height+10);
            var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
            tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
         onClose: function () {
            //面板关闭的时候触发 (when this panel is closed trigger)
         },
         onMinimize: function () {
            this.resize();
         },
         onMaximize: function () {
            this.resize();
         },
         resize: function () {
         },
         destroy: function () {
            //销毁的时候触发
            //todo
            //do something before this func
            this.inherited(arguments);
         }
         // tileset数据加载好后,便缩放相机视角
         this.tileset.readyPromise.then(zoomToTileset);
         var tit = dojo.query(".cesium-baseLayerPicker-sectionTitle")[1];
         html.create('div', {
            style:"font-size: 14px;margin-top: 3px;float: right;",
            innerHTML:"倾斜三维"
         }, tit);
      });
   });
         var qxNode = html.create('input', {
            style:"margin-top: 6px;margin-right: 5px;float: right;",
            type:"checkbox",
            checked:"checked"
         }, tit);
         on(qxNode, "click", lang.hitch(this, this._switchTile))
      },
      _switchTile: function () {
         if(this.tileset.show){
            this.tileset.show = false;
         }
         else{
            this.tileset.show = true;
         }
      },
      closeBaseMap: function (item) {
         if (item != this.name) {
            if ($('.cesium-baseLayerPicker-dropDown').hasClass('cesium-baseLayerPicker-dropDown-visible') == true) {
               $('.cesium-baseLayerPicker-dropDown').removeClass('cesium-baseLayerPicker-dropDown-visible')
            }
         }
      },
      onOpen: function () {
         //面板打开的时候触发 (when open this panel trigger)
      },
      onClose: function () {
         //面板关闭的时候触发 (when this panel is closed trigger)
      },
      onMinimize: function () {
         this.resize();
      },
      onMaximize: function () {
         this.resize();
      },
      resize: function () {
      },
      destroy: function () {
         //销毁的时候触发
         //todo
         //do something before this func
         this.inherited(arguments);
      }
   });
});