[Users] how to find a layer in layertree
Matt Priour
mpriour at kestrelcomputer.com
Tue Jan 18 20:13:14 CET 2011
If you want to know if a layer is on the map, then either check the map:
By Name -
if(map.findLayersByName(layerName).length){
// we found the layer
} else {
// layer not found
}
By Layer -
if(map.layers.indexOf(layer)>-1){
// we found it
} else {
// layer not in map
}
or check the layer store
By Name -
var index = mapPanel.layers.findBy(function(rec){
return rec.getLayer().name == layerName // assumes that layerName has been previously defined
})
if(index>-1){ //found the layer } else { //no layer matched }
By Layer
if(mapPanel.layers.getByLayer(layer)){ //found the layer } else { //no layer found }
If you want to know if a node exists in the tree with then just cascade down the tree
var rootNode = layerTree.getRootNode();
var res = {layerFound:false};
// find by layer, useful for gx_layers loaded by a layerContainer; assume that layer has been previously defined
rootNode.cascade(function(node){
if(node.layer && node.layer == layer){
this.layerFound = true;
return false;
}
},res);
//find by text. assume searchText has already been defined
rootNode.cascade(function(node){
if(node.text == searchText){
this.layerFound = true;
return false;
}
},res);
if(res.layerFound){ //found the node } else { //no matching node found }
Matt Priour
Kestrel Computer Consulting
From: IT Intern
Sent: Tuesday, January 18, 2011 11:32 AM
To: Robert Buckley
Cc: users at geoext.org
Subject: Re: [Users] how to find a layer in layertree
hmm this might be a brute-force way of doing this, but I think writing an event handler for everytime a new layer is added (assuming by button click) you traverse the entire tree..
for(var c = 0; c < layerRoot.getOwnerTree().getNodeById(parent.id).childNodes.length; c++){
layerRoot.getOwnerTree().getNodeById(parent.id).childNodes[c].eachChild(function(node) {
if (node.layer.name == map.getLayersByName(layerName)) {
//then put logic in here...maybe create a count variable or something like
layerExists += 1;
}//end if
});//end eachChild
}//end for
Hope this gives you some kind of lead,
elshae
On Tue, Jan 18, 2011 at 12:09 PM, Robert Buckley <robertdbuckley at yahoo.com> wrote:
Hi,
I am trying to write a function which checks to see if a layer is present in the tree.
if the layer already exists in the tree (or map) is shouldn´t be loaded...
can anyone help?
var clonename = clone.get("layer").name
if (mapPanel.layers(clonename)) {
Ext.MessageBox.alert(null, "test");
}
else
{
mapPanel.layers.add(clone);
Ext.MessageBox.alert(null, clonename);
}
Cheers
Rob
_______________________________________________
Users mailing list
Users at geoext.org
http://www.geoext.org/cgi-bin/mailman/listinfo/users
--------------------------------------------------------------------------------
_______________________________________________
Users mailing list
Users at geoext.org
http://www.geoext.org/cgi-bin/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.geoext.org/pipermail/users/attachments/20110118/e83e0382/attachment.htm
More information about the Users
mailing list