bmh_cesium/public/widgets/plotAttr/widget.js
2025-03-10 07:23:50 +08:00

169 lines
5.0 KiB
JavaScript

//模块:
xjsdk.widget.bindClass(xjsdk.widget.BaseWidget.extend({
options: {
//弹窗
view: {
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: function () {
var that = this;
$.getJSON(this.path + "config/attr.json", function (data) {
that.attrConfig = data;
// that.getDefaultVal();//测试用
// that.getReadmeTxt(); //测试用
that.attrConfig["curve"] = that.attrConfig["polyline"]
that.startEditing();
});
},
//获取所有可配置属性的默认值
getDefaultVal: function () {
var data = this.attrConfig;
//标号默认样式
var attrDefConfig = {};
for (var i in data) {
var defstyle = {};
for (var idx = 0; idx < data[i].style.length; idx++) {
var item = data[i].style[idx];
if (item.defval === "" ) continue;
defstyle[item.name] = item.defval;
}
attrDefConfig[i] = defstyle;
}
console.log('===========标号默认样式=================');
console.log(JSON.stringify(attrDefConfig));
},
//获取所有可配置属性的说明文档
getReadmeTxt: function () {
var data = this.attrConfig;
//标号可配置的属性
var strAPI = '';
for (var i in data) {
var strAPIItem = ''
for (var idx = 0; idx < data[i].style.length; idx++) {
var item = data[i].style[idx];
if (haoutil.isutil.isString(item.defval))
item.defval = '"' + item.defval + '"'
strAPIItem += ` "${item.name}": ${item.defval}, //${item.label} \n`
}
strAPI += `{
"type": "${i}",
"style": {
${strAPIItem}
}
}
`;
}
haoutil.file.downloadFile("标绘属性配置.txt", strAPI);
},
viewWindow: null,
//每个窗口创建完成后调用
winCreateOK: function (opt, result) {
this.viewWindow = result;
},
//激活插件
activate: function () {
},
//释放插件
disable: function () {
},
getMinPointNum: function () {
var entity = this.config.entity;
if (entity && entity.editing && entity.editing._minPointNum)
return entity.editing._minPointNum
return 3;
},
getMaxPointNum: function () {
var entity = this.config.entity;
if (entity && entity.editing && entity.editing._maxPointNum)
return entity.editing._maxPointNum
return 999;
},
defaultAttrList: [
{ "name": "id", "label": "主键", "type": "label", "defval": "" },
{ "name": "name", "label": "名称", "type": "text", "defval": "" },
{ "name": "remark", "label": "备注", "type": "textarea", "defval": "" }
],
getAttrList: function () {
return this.config.attrList || this.defaultAttrList;
},
startEditing: function (entity, lonlats) {
if (entity) this.config.entity = entity
if (lonlats) this.config.lonlats = lonlats
if (this.viewWindow == null) return;
var entity = this.config.entity;
var lonlats = this.config.lonlats;//this.drawControl.getCoordinates(entity);
this.viewWindow.plotEdit.startEditing(entity.attribute, lonlats);
},
//更新图上的属性
updateAttr2map: function (attr) {
if (this.config.updateAttr) this.config.updateAttr(attr);
},
//更新图上的几何形状、坐标等
updateGeo2map: function (coords, withHeight) {
var positions = [];
if (withHeight) {
for (var i = 0; i < coords.length; i += 3) {
var point = Cesium.Cartesian3.fromDegrees(coords[i], coords[i + 1], coords[i + 2]);
positions.push(point);
}
} else {
for (var i = 0; i < coords.length; i += 2) {
var point = Cesium.Cartesian3.fromDegrees(coords[i], coords[i + 1], 0);
positions.push(point);
}
}
if (this.config.updateGeo) this.config.updateGeo(positions);
return positions;
},
centerCurrentEntity: function () {
var entity = this.config.entity;
if (this.config.centerAt) this.config.centerAt(entity);
},
deleteEntity: function () {
var entity = this.config.entity;
if (this.config.deleteEntity) this.config.deleteEntity(entity);
this.disableBase();
},
//文件处理
getGeoJson: function () {
var entity = this.config.entity;
return xjsdk.draw.attr.toGeoJSON(entity);
},
}));