| | |
| | | 'use script' //开发环境建议开启严格模式 |
| | | ;(function (window, mars3d) { |
| | | "use script"; //开发环境建议开启严格模式 |
| | | (function (window, mars3d) { |
| | | //创建widget类,需要继承BaseWidget |
| | | class MyWidget extends mars3d.widget.BaseWidget { |
| | | //弹窗配置 |
| | | get view() { |
| | | return { |
| | | type: 'window', |
| | | url: 'view.html', |
| | | type: "window", |
| | | url: "view.html", |
| | | windowOptions: { |
| | | // noTitle: true, |
| | | // closeBtn: 0, |
| | | width: 250, |
| | | height: 500, |
| | | }, |
| | | } |
| | | }; |
| | | } |
| | | //是否可以控制basemaps,因为有底图控制了,具体项目中可以按需改为false |
| | | get hasManagerBaseMaps() { |
| | | return true |
| | | return true; |
| | | } |
| | | |
| | | //初始化[仅执行1次] |
| | | create() {} |
| | | //每个窗口创建完成后调用 |
| | | winCreateOK(opt, result) { |
| | | this.viewWindow = result |
| | | this.viewWindow = result; |
| | | } |
| | | //打开激活 |
| | | activate() { |
| | | //监听事件,联动勾选状态 |
| | | this.map.on(mars3d.EventType.addLayer, this._onAddLayerHandler, this) |
| | | this.map.on(mars3d.EventType.removeLayer, this._onRemoveLayerHandler, this) |
| | | this.map.on(mars3d.EventType.addLayer, this._onAddLayerHandler, this); |
| | | this.map.on(mars3d.EventType.removeLayer, this._onRemoveLayerHandler, this); |
| | | } |
| | | //关闭释放 |
| | | disable() { |
| | | this.viewWindow = null |
| | | this.viewWindow = null; |
| | | |
| | | this.map.off(mars3d.EventType.addLayer, this._onAddLayerHandler, this) |
| | | this.map.off(mars3d.EventType.removeLayer, this._onRemoveLayerHandler, this) |
| | | this.map.off(mars3d.EventType.addLayer, this._onAddLayerHandler, this); |
| | | this.map.off(mars3d.EventType.removeLayer, this._onRemoveLayerHandler, this); |
| | | } |
| | | _onAddLayerHandler(e) { |
| | | if (!this.isActivate || !this.viewWindow) { |
| | | return |
| | | return; |
| | | } |
| | | console.log('添加了图层', e) |
| | | console.log("添加了图层", e); |
| | | |
| | | this.viewWindow.updateNode(e.layer) |
| | | this.viewWindow.updateNode(e.layer); |
| | | } |
| | | _onRemoveLayerHandler(e) { |
| | | if (!this.isActivate || !this.viewWindow) { |
| | | return |
| | | return; |
| | | } |
| | | console.log('移除了图层', e) |
| | | console.log("移除了图层", e); |
| | | |
| | | this.viewWindow.removeNode(e.layer) |
| | | this.viewWindow.removeNode(e.layer); |
| | | } |
| | | |
| | | getLayers() { |
| | | return this.map.getLayers({ |
| | | basemaps: true, //是否取config.json中的basempas |
| | | layers: true, //是否取config.json中的layers |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | //更新图层:显示隐藏状态 |
| | | updateLayerShow(layer, show) { |
| | | layer.show = show |
| | | |
| | | //对单击的图层做处理(单个) |
| | | checkClickLayer(layer, show) { |
| | | if (show) { |
| | | if (!layer.isAdded) { |
| | | this.map.off(mars3d.EventType.addLayer, this._onAddLayerHandler, this) |
| | | this.map.addLayer(layer) |
| | | this.map.on(mars3d.EventType.addLayer, this._onAddLayerHandler, this) |
| | | } |
| | | if (this.config.autoCenter && !layer.options.noCenter) { |
| | | //在对应config.json图层节点配置 noCenter:true 可以不定位 |
| | | layer.flyTo() |
| | | layer.flyTo(); |
| | | } |
| | | |
| | | //存在关联widget时 |
| | | let item = layer.options |
| | | let item = layer.options; |
| | | if (item.onWidget) { |
| | | if (this._lastWidget) { |
| | | mars3d.widget.disable(this._lastWidget); |
| | | this._lastWidget = null; |
| | | } |
| | | |
| | | mars3d.widget.activate({ |
| | | uri: item.onWidget, |
| | | layerItem: item, |
| | | disableOther: false, |
| | | }) |
| | | }); |
| | | this._lastWidget = item.onWidget; |
| | | } |
| | | } else { |
| | | //存在关联widget时 |
| | | let item = layer.options; |
| | | if (item.onWidget) { |
| | | mars3d.widget.disable(item.onWidget); |
| | | if (this._lastWidget == item.onWidget) { |
| | | this._lastWidget = null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //更新图层:显示隐藏状态(勾选后的图层及其子级图层,多个) |
| | | updateLayerShow(layer, show) { |
| | | layer.show = show; |
| | | |
| | | if (show) { |
| | | if (!layer.isAdded) { |
| | | this.map.off(mars3d.EventType.addLayer, this._onAddLayerHandler, this); |
| | | this.map.addLayer(layer); |
| | | this.map.on(mars3d.EventType.addLayer, this._onAddLayerHandler, this); |
| | | } |
| | | } else { |
| | | // if (layer.isAdded) { |
| | | // this.map.removeLayer(layer) |
| | | // } |
| | | |
| | | //存在关联widget时 |
| | | let item = layer.options |
| | | if (item.onWidget) { |
| | | mars3d.widget.disable(item.onWidget) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //注册到widget管理器中。 |
| | | mars3d.widget.bindClass(MyWidget) |
| | | mars3d.widget.bindClass(MyWidget); |
| | | |
| | | //每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。 |
| | | })(window, mars3d) |
| | | })(window, mars3d); |