151 lines
4.0 KiB
JavaScript
151 lines
4.0 KiB
JavaScript
"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);
|