(function (window, mars3d) { //创建widget类,需要继承BaseWidget class MyWidget extends mars3d.widget.BaseWidget { //弹窗配置 get view() { return { type: "window", url: "view.html", windowOptions: { width: 250, height: 500, }, }; } create() { var inhtml = `
`; $("body").append(inhtml); var mapOptions2 = this.map.getOptions(); //绑定的控件 mapOptions2.control = { baseLayerPicker: true, //basemaps底图切换按钮 defaultContextMenu: true, //右键菜单 }; //用于双屏同图层,不同配置展示 for (let i = 0, len = mapOptions2.layers.length; i < len; i++) { let item = mapOptions2.layers[i]; if (item.compare) { //存在compare属性时 for (var key in item.compare) { item[key] = item.compare[key]; } } } //后置加的图层的处理 var mapLayers = this.map.getLayers({ filter: true, }); for (let i = mapLayers.length - 1; i >= 0; i--) { let layer = mapLayers[i]; if (layer.noLayerManage || layer.parent) { continue; } mapOptions2.layers.push(layer.toJSON()); } console.log("分屏地图配置", mapOptions2); this.mapEx = new mars3d.Map("cesiumContainerEx", mapOptions2); this.mapEx.basemap = "天地图电子"; this.map.on(mars3d.EventType.morphComplete, (event) => { //切换场景前事件 if (this.map.scene.mode === Cesium.SceneMode.SCENE2D) { this.mapEx.scene.screenSpaceCameraController.enableTilt = false; } else { this.mapEx.scene.screenSpaceCameraController.enableTilt = true; } }); } //每个窗口创建完成后调用 winCreateOK(opt, result) { $("#btn_mapCompare_close").click(() => { this.disableBase(); }); } //激活插件 activate() { $("#centerDiv").css({ position: "absolute", height: "100%", width: "50%", top: 0, left: "auto", right: 0, }); $("#centerDivEx").show(); this.map.on(mars3d.EventType.cameraChanged, this._map_extentChangeHandler, this); this.map.camera.percentageChanged = 0.01; this.mapEx.on(mars3d.EventType.cameraChanged, this._mapEx_extentChangeHandler, this); this.mapEx.camera.percentageChanged = 0.01; this._map_extentChangeHandler(); } //释放插件 disable() { this.map.off(mars3d.EventType.cameraChanged, this._map_extentChangeHandler, this); this.mapEx.off(mars3d.EventType.cameraChanged, this._mapEx_extentChangeHandler, this); $("#centerDivEx").hide(); $("#centerDiv").css({ position: "", height: "100%", width: "100%", left: 0, right: "auto", }); } _map_extentChangeHandler(e) { if (!this.isActivate) { return; } // console.log('map主地图 视角变化了') this.mapEx.off(mars3d.EventType.cameraChanged, this._mapEx_extentChangeHandler, this); this.updateView(this.map, this.mapEx); this.mapEx.on(mars3d.EventType.cameraChanged, this._mapEx_extentChangeHandler, this); } _mapEx_extentChangeHandler(e) { if (!this.isActivate) { return; } // console.log('mapEx对比地图 视角变化了') this.map.off(mars3d.EventType.cameraChanged, this._map_extentChangeHandler, this); this.updateView(this.mapEx, this.map); this.map.on(mars3d.EventType.cameraChanged, this._map_extentChangeHandler, this); } //“变化屏”mapChange变化,将“被更新屏”mapUpdate同步更新 updateView(mapChange, mapUpdate) { var cameraView = mapChange.getCameraView(); mapUpdate.setCameraView(cameraView, { duration: 0 }); } //图层树相关 getLayers() { return this.mapEx.getLayers({ basemaps: true, //是否取config.json中的basempas layers: true, //是否取config.json中的layers }); } //更新图层:显示隐藏状态 updateLayerShow(layer, show) { layer.show = show; if (show) { if (!layer.isAdded) { this.mapEx.addLayer(layer); } } else { // if (layer.isAdded) { // this.mapEx.removeLayer(layer) // } } } } //注册到widget管理器中。 mars3d.widget.bindClass(MyWidget); //每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。 })(window, mars3d);