"use script"; //开发环境建议开启严格模式 (function (window, mars3d) { //创建widget类,需要继承BaseWidget class MyWidget extends mars3d.widget.BaseWidget { //弹窗配置 get view() { return { type: "window", url: "view.html", style: "dark", windowOptions: { skin: "layer-mars-dialog animation-scale-up", width: 250, position: { top: 10, right: 5, bottom: 30, }, }, }; } //初始化[仅执行1次] create() { let that = this; $.getJSON(this.path + "config/attr.json", function (data) { that.attrConfig = data; that.setDefaultVal(); that.attrConfig["curve"] = that.attrConfig["polyline"]; that.startEditing(); }); } //获取所有可配置属性的默认值 setDefaultVal() { let data = this.attrConfig; //标号默认样式 let attrDefConfig = {}; for (let i in data) { let defstyle = {}; for (let idx = 0; idx < data[i].style.length; idx++) { let item = data[i].style[idx]; defstyle[item.name] = item.defval; } attrDefConfig[i] = defstyle; } this.attrDefConfig = attrDefConfig; // let logInfo = JSON.stringify(attrDefConfig) // logInfo = logInfo.replaceAll('"diffHeight":0,', '').replaceAll('"hasShadows":false,', '') // console.log('标号默认样式', logInfo) } //每个窗口创建完成后调用 winCreateOK(opt, result) { this.viewWindow = result; } //激活插件 activate() {} //释放插件 disable() {} getDefStyle(type) { let defStyle = this.attrDefConfig[type] || {}; return mars3d.Util.clone(defStyle); } getMinPointNum() { let graphic = this.config.graphic; if (graphic && graphic._minPointNum) { return graphic._minPointNum; } return 3; } getMaxPointNum() { let graphic = this.config.graphic; if (graphic && graphic._maxPointNum) { return graphic._maxPointNum; } return 999; } get defaultAttrList() { return [ { name: "id", label: "主键", type: "label", defval: "" }, { name: "name", label: "名称", type: "text", defval: "" }, { name: "remark", label: "备注", type: "textarea", defval: "" }, ]; } getAttrList() { return this.config.attrList || this.defaultAttrList; } getLayerName() { let graphic = this.config.graphic; return graphic?._layer?.name || ""; } startEditing(graphic, lonlats) { if (graphic) { this.config.graphic = graphic; } if (lonlats) { this.config.lonlats = lonlats; } if (this.viewWindow == null) { return; } graphic = this.config.graphic; lonlats = this.config.lonlats; this.viewWindow.plotEdit.startEditing(graphic.options, lonlats); } //更新图上的属性 updateAttr2map(attr) { console.log("更新属性", attr); var graphic = this.config.graphic; //当前编辑的graphic graphic.setOptions(attr); } //更新坐标 updatePoints2map(points) { console.log("更新坐标", points); var graphic = this.config.graphic; graphic.positions = points; } centerCurrentEntity() { let graphic = this.config.graphic; graphic.flyTo(); } deleteEntity() { let graphic = this.config.graphic; graphic.remove(); this.disableBase(); } //文件处理 getGeoJson() { let graphic = this.config.graphic; let geojson = graphic.toGeoJSON(); geojson.properties._layer = graphic._layer.name; //记录分组信息 return geojson; } } //注册到widget管理器中。 mars3d.widget.bindClass(MyWidget); //每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。 })(window, mars3d);