;(function (window, mars3d) { //创建widget类,需要继承BaseWidget class MyWidget extends mars3d.widget.BaseWidget { //外部资源配置 get resources() { return ['view.css'] } //弹窗配置 get view() { return { type: 'append', url: 'view.html', parent: '#centerDiv' } } //初始化[仅执行1次] create() { //此数据也可以放在widget.json的配置中,但是发现很多人容易引起同名误解,所以还是放在这里 this.data = this.config.data || [ { name: '底图', icon: 'fa fa-map', widget: 'widgets/manageBasemaps/widget.js' }, { name: '图层', icon: 'fa fa-tasks', widget: 'widgets/manageLayers/widget.js' }, { name: '工具', icon: 'fa fa-cubes', children: [ { name: '图上量算', icon: 'fa fa-calculator', widget: 'widgets/measure/widget.js' }, { name: '空间分析', icon: 'fa fa-bar-chart', widget: 'widgets/analysis/widget.js' }, { name: '快速定位', icon: 'fa fa-paper-plane', widget: 'widgets/customLocation/widget.js' }, { name: '坐标定位', icon: 'fa fa-map-pin', widget: 'widgets/centerXY/widget.js' }, { name: '地区导航', icon: 'fa fa-paper-plane', widget: 'widgets/navXZQH/widget.js' }, { name: '我的标记', icon: 'fa fa-edit', widget: 'widgets/addmarker/widget.js' }, { name: '视角书签', icon: 'fa fa-tags', widget: 'widgets/bookmark/widget.js' }, { name: '地图打印', icon: 'fa fa-print', widget: 'widgets/print/widget.js' }, { name: '图上标绘', icon: 'fa fa-object-group', widget: 'widgets/plot/widget.js' }, { name: '飞行漫游', icon: 'fa fa-send-o', widget: 'widgets/roamLine/widget.js' }, { name: '路线导航', icon: 'fa fa-level-up', widget: 'widgets/queryRoute/widget.js' }, { name: '卷帘对比', icon: 'fa fa-columns', widget: 'widgets/mapSwipe/widget.js' }, { name: '分屏对比', icon: 'fa fa-window-restore', widget: 'widgets/mapCompare/widget.js' }, { name: '百度街景', icon: 'fa fa-street-view', widget: 'widgets/streetscape/widget.js' }, ], }, ] } //每个窗口创建完成后调用 winCreateOK(viewopt, html) { if (viewopt.type != 'append') { return } var arr = this.data //移动设备上,处理下菜单层次 if (!haoutil.system.isPCBroswer() && arr.length == 3 && arr[0].children) { var item1 = arr.shift() var item2 = arr.shift() arr[0].children.insert(item2, 0) arr[0].children.insert(item1, 0) } this.initMenu(arr) } //构造 菜单 initMenu(arr) { var widgetObj = {} var inhtml = '' for (var i = 0, len = arr.length; i < len; i++) { var item = arr[i] if (item.hasOwnProperty('visible') && !item.visible) { continue } if (item.children) { //分组 inhtml += `
' } else { //不是分组 let ex = '' if (item.onclick) { ex = 'onclick="' + item.onclick + '"' } else if (item.widget) { ex = 'data-widget="' + item.widget + '"' } inhtml += `` widgetObj[item.widget] = item } } $('.toolBarRight').html(inhtml) $('.toolBarRight .widget-btn').click(function () { var uri = $(this).attr('data-widget') if (haoutil.isutil.isNull(uri)) { return } var toolBarTop = document.getElementsByClassName("toolBarRight")[0].style.top; toolBarTop = toolBarTop.replace('px', ''); var toolbarHeight = getComputedStyle(document.getElementsByClassName("toolBarRight")[0]).height; toolbarHeight = toolbarHeight.replace('px', ''); var headerHeight = document.getElementsByClassName("el-header")[0].style.height; headerHeight = headerHeight.replace('px', ''); var h = parseInt(toolbarHeight) + parseInt(toolBarTop) + parseInt(headerHeight) + 5; // console.log('单击了工具栏:' + uri); // console.log(h); if (mars3d.widget.isActivate(uri)) { mars3d.widget.disable(uri) } else { var opt = { ...(widgetObj[uri] || {}), uri: uri, windowOptions: {position: {'top':h, 'right':10}, height:700}, } mars3d.widget.activate(opt) } }) } //激活插件 activate() {} //释放插件 disable() {} } //注册到widget管理器中。 mars3d.widget.bindClass(MyWidget) //每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。 })(window, mars3d)