Fei_Xian_Lin_Ye_Fang_Huo/public/widgets/plotAttr/widget.js

151 lines
4.0 KiB
JavaScript
Raw Normal View History

2023-08-18 08:55:52 +08:00
"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) {
console.log("datadatadata",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;
}
console.log("graphicgraphic",graphic);
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;
return graphic.toGeoJSON();
}
}
//注册到widget管理器中。
mars3d.widget.bindClass(MyWidget);
//每个widet之间都是直接引入到index.html中会存在彼此命名冲突所以闭包处理下。
})(window, mars3d);