/**************
*功能:图层控制
*作者:hope
****************/
var visible = [];
function getChildrenNodes(parentnodes, node) {
for (var i = parentnodes.length - 1; i >= 0; i--) {
var pnode = parentnodes[i];
//如果是父子关系,为父节点增加子节点,退出for循环
if (pnode.id == node.pid) {
pnode.state = "closed";//关闭二级树
pnode.children.push(node);
return;
} else {
//如果不是父子关系,删除父节点栈里当前的节点,
//继续此次循环,直到确定父子关系或不存在退出for循环
parentnodes.pop();
}
}
}
function buildLayerList(layer) {
//构建图层树形结构
var layerinfos = layer.layerInfos;
var treeList = [];//jquery-easyui的tree用到的tree_data.json数组
var parentnodes = [];//保存所有的父亲节点
var root = { "id": "rootnode", "text": "所有图层", "children": [] };//增加一个根节点
var node = {};
if (layerinfos != null && layerinfos.length > 0) {
for (var i = 0; i < layerinfos.length; i++) {
var info = layerinfos[i];
if (info.defaultVisibility) {
visible.push(info.id);
}
//node为tree用到的json数据
node = {
"id": info.id,
"text": info.name,
"pid": info.parentLayerId,
"checked": info.defaultVisibility ? true : false,
"children": []
};
if (info.parentLayerId == -1) {
parentnodes.push(node);
root.children.push(node);
} else {
getChildrenNodes(parentnodes, node);
parentnodes.push(node);
}
}
}
treeList.push(root);
//jquery-easyui的树
$('#toc').tree({
data: treeList,
checkbox: true, //使节点增加选择框
onCheck: function (node, checked) {//更新显示选择的图层
var visible = [];
var nodes = $('#toc').tree("getChecked");
dojo.forEach(nodes, function (node) {
if (!isNaN(node.id))
{ visible.push(node.id); }
});
//if there aren't any layers visible set the array to be -1
if (visible.length === 0) {
visible.push(-1);
}
layer.setVisibleLayers(visible);
}
});
layer.setVisibleLayers(visible);
map.addLayer(layer);
}
var layer5line = new esri.layers.ArcGISDynamicMapServiceLayer("http://127.0.0.1/ArcGIS/rest/services/jingtou/MapServer");
if (layer5line.loaded) {
buildLayerList(layer5line);
} else {
dojo.connect(layer5line, "onLoad", buildLayerList);
}
*功能:图层控制
*作者:hope
****************/
var visible = [];
function getChildrenNodes(parentnodes, node) {
for (var i = parentnodes.length - 1; i >= 0; i--) {
var pnode = parentnodes[i];
//如果是父子关系,为父节点增加子节点,退出for循环
if (pnode.id == node.pid) {
pnode.state = "closed";//关闭二级树
pnode.children.push(node);
return;
} else {
//如果不是父子关系,删除父节点栈里当前的节点,
//继续此次循环,直到确定父子关系或不存在退出for循环
parentnodes.pop();
}
}
}
function buildLayerList(layer) {
//构建图层树形结构
var layerinfos = layer.layerInfos;
var treeList = [];//jquery-easyui的tree用到的tree_data.json数组
var parentnodes = [];//保存所有的父亲节点
var root = { "id": "rootnode", "text": "所有图层", "children": [] };//增加一个根节点
var node = {};
if (layerinfos != null && layerinfos.length > 0) {
for (var i = 0; i < layerinfos.length; i++) {
var info = layerinfos[i];
if (info.defaultVisibility) {
visible.push(info.id);
}
//node为tree用到的json数据
node = {
"id": info.id,
"text": info.name,
"pid": info.parentLayerId,
"checked": info.defaultVisibility ? true : false,
"children": []
};
if (info.parentLayerId == -1) {
parentnodes.push(node);
root.children.push(node);
} else {
getChildrenNodes(parentnodes, node);
parentnodes.push(node);
}
}
}
treeList.push(root);
//jquery-easyui的树
$('#toc').tree({
data: treeList,
checkbox: true, //使节点增加选择框
onCheck: function (node, checked) {//更新显示选择的图层
var visible = [];
var nodes = $('#toc').tree("getChecked");
dojo.forEach(nodes, function (node) {
if (!isNaN(node.id))
{ visible.push(node.id); }
});
//if there aren't any layers visible set the array to be -1
if (visible.length === 0) {
visible.push(-1);
}
layer.setVisibleLayers(visible);
}
});
layer.setVisibleLayers(visible);
map.addLayer(layer);
}
var layer5line = new esri.layers.ArcGISDynamicMapServiceLayer("http://127.0.0.1/ArcGIS/rest/services/jingtou/MapServer");
if (layer5line.loaded) {
buildLayerList(layer5line);
} else {
dojo.connect(layer5line, "onLoad", buildLayerList);
}