191 lines
5.6 KiB
JavaScript
191 lines
5.6 KiB
JavaScript
|
|
|||
|
//模块:
|
|||
|
xjsdk.widget.bindClass(xjsdk.widget.BaseWidget.extend({
|
|||
|
options: {
|
|||
|
//弹窗
|
|||
|
view: {
|
|||
|
type: "window",
|
|||
|
url: "view.html",
|
|||
|
windowOptions: {
|
|||
|
width: 250,
|
|||
|
height: 500
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
hasManagerBaseMaps: true, //是否对基础底图做做控制
|
|||
|
//初始化[仅执行1次]
|
|||
|
create: function () {
|
|||
|
|
|||
|
},
|
|||
|
viewWindow: null,
|
|||
|
//每个窗口创建完成后调用
|
|||
|
winCreateOK: function (opt, result) {
|
|||
|
this.viewWindow = result;
|
|||
|
},
|
|||
|
//打开激活
|
|||
|
activate: function () {
|
|||
|
|
|||
|
|
|||
|
},
|
|||
|
//关闭释放
|
|||
|
disable: function () {
|
|||
|
this.viewWindow = null;
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
_layers: null,
|
|||
|
//绑定自定义的非配置图层到图层控制控件中
|
|||
|
addOverlay: function (item) {
|
|||
|
|
|||
|
if (!item.name)
|
|||
|
item.name = "未命名";
|
|||
|
if (!item.id)
|
|||
|
item.id = viewer.xjsdk.getNextId();
|
|||
|
if (!item.pid)
|
|||
|
item.pid = -1;
|
|||
|
|
|||
|
//计算层次顺序
|
|||
|
var order = Number(item.order);
|
|||
|
if (isNaN(order))
|
|||
|
order = this._layers.length + 1;
|
|||
|
item.order = order;
|
|||
|
|
|||
|
//主键,用于存储取图层用,防止有重复
|
|||
|
item._key = this._layers.length + "_" + item.id + "_" + item.name;
|
|||
|
|
|||
|
this._layers.push(item);
|
|||
|
|
|||
|
if (this.isActivate && this.viewWindow) {
|
|||
|
this.viewWindow.addNode(item);
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//从图层控制控件中删除指定的图层
|
|||
|
removeLayer: function (name) {
|
|||
|
for (var i = 0; i < this._layers.length; i++) {
|
|||
|
var item = this._layers[i];
|
|||
|
|
|||
|
if (item.name == name) {
|
|||
|
this._layers.splice(i, 1);
|
|||
|
|
|||
|
if (this.isActivate && this.viewWindow) {
|
|||
|
this.viewWindow.removeNode(item);
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
getLayers: function () {
|
|||
|
|
|||
|
if (this._layers == null) {
|
|||
|
var layers = [];
|
|||
|
var basemapsCfg = this.hasManagerBaseMaps ? this.viewer.xjsdk.config.basemaps : [];
|
|||
|
var operationallayersCfg = this.viewer.xjsdk.config.operationallayers;
|
|||
|
|
|||
|
|
|||
|
//构建集合,预处理相关数据
|
|||
|
for (var i = 0; i < basemapsCfg.length; i++) {
|
|||
|
var item = basemapsCfg[i];
|
|||
|
layers.push(item);
|
|||
|
|
|||
|
// if (item.type == "group" && item.layers) { //group是否打开控制子图层,是的话取消注释
|
|||
|
// for (var idx = 0; idx < item.layers.length; idx++) {
|
|||
|
// var childitem = item.layers[idx];
|
|||
|
|
|||
|
// if (!childitem.name)
|
|||
|
// childitem.name = item.name + '-' + (idx + 1);
|
|||
|
|
|||
|
// childitem._parent = item;
|
|||
|
// layers.push(childitem);
|
|||
|
// }
|
|||
|
// }
|
|||
|
}
|
|||
|
|
|||
|
for (var i = 0; i < operationallayersCfg.length; i++) {
|
|||
|
var item = operationallayersCfg[i];
|
|||
|
layers.push(item);
|
|||
|
|
|||
|
// if (item.type == "group" && item.layers) {//group是否打开控制子图层,是的话取消注释
|
|||
|
// for (var idx = 0; idx < item.layers.length; idx++) {
|
|||
|
// var childitem = item.layers[idx];
|
|||
|
|
|||
|
// if (!childitem.name)
|
|||
|
// childitem.name = item.name + '-' + (idx + 1);
|
|||
|
|
|||
|
// childitem._parent = item;
|
|||
|
// layers.push(childitem);
|
|||
|
// }
|
|||
|
// }
|
|||
|
}
|
|||
|
|
|||
|
//初始化顺序字段,
|
|||
|
for (var i = 0; i < layers.length; i++) {
|
|||
|
var item = layers[i];
|
|||
|
|
|||
|
//主键,用于存储取图层用,防止有重复
|
|||
|
item._key = i + "_" + item.id + "_" + item.name;
|
|||
|
}
|
|||
|
this._layers = layers;
|
|||
|
}
|
|||
|
return this._layers;
|
|||
|
},
|
|||
|
//定位
|
|||
|
getLayar: function (item) {
|
|||
|
return this.viewer.xjsdk.getLayer(item);
|
|||
|
},
|
|||
|
centerAt: function (item) {
|
|||
|
var model = this.getLayar(item);
|
|||
|
model && model.centerAt();
|
|||
|
},
|
|||
|
getLayerVisible: function (item) {
|
|||
|
var model = this.getLayar(item);
|
|||
|
return model && model.getVisible();
|
|||
|
},
|
|||
|
//更新图层:显示隐藏状态
|
|||
|
updateLayerVisible: function (item, visible) {
|
|||
|
var model = this.getLayar(item);
|
|||
|
|
|||
|
model.config.visible = visible; //修改配置中的值
|
|||
|
|
|||
|
model.setVisible(visible);
|
|||
|
|
|||
|
|
|||
|
if (visible && this.config.autoCenter
|
|||
|
&& !model.config.noCenter) {//在对应config.json图层节点配置noCenter:true 可以不定位
|
|||
|
model.centerAt();
|
|||
|
}
|
|||
|
|
|||
|
//存在关联widget时
|
|||
|
if (item.onWidget) {
|
|||
|
if (visible) {
|
|||
|
xjsdk.widget.activate({
|
|||
|
uri: item.onWidget,
|
|||
|
layerItem: item,
|
|||
|
disableOther: false
|
|||
|
});
|
|||
|
} else {
|
|||
|
xjsdk.widget.disable(item.onWidget);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//更新到分屏对比
|
|||
|
// var mapCompare = xjsdk.widget.getClass('widgets/mapCompare/widget.js');
|
|||
|
// if (mapCompare) {
|
|||
|
// mapCompare.updateLayerVisible(model.config, visible);
|
|||
|
// }
|
|||
|
},
|
|||
|
//更新图层:透明度
|
|||
|
udpateLayerOpacity: function (item, opacity) {
|
|||
|
var model = this.getLayar(item);
|
|||
|
model.setOpacity(opacity);
|
|||
|
},
|
|||
|
//更新图层:顺序
|
|||
|
udpateLayerZIndex: function (item, order) {
|
|||
|
var model = this.getLayar(item);
|
|||
|
model.setZIndex(order);
|
|||
|
}
|
|||
|
}));
|