[Users] Keeping Selected Layers When Replacing Child Nodes
IT Intern
itintern12 at gmail.com
Wed Oct 20 19:02:40 CEST 2010
Ok so far I have been able to find a way to access the properties of
nodes...now I am struggling to find out if there is anyway to access the
properties of the node's leafs? If anyone know please help me, I think if I
have that I will be able to carry out the desired task :)
Some code of my approach:
var i;
var j = 0;
var selectedLayers = new Array();
while(layerRoot.lastChild.hasChildNodes()){
alert(layerRoot.lastChild.firstChild.childNodes.length); //This returns 0,
but the childNodes here are leafs :(
for(i = 0; i <
layerRoot.lastChild.firstChild.childNodes.length; i++){
if(layerRoot.lastChild.firstChild.childNodes[i].isSelected()){
selectedLayers[j] =
layerRoot.lastChild.firstChild.childNodes[i].attributes.text;
alert(selectedLayers[j]);
j++;
}
}
layerRoot.lastChild.removeChild(layerRoot.lastChild.firstChild);
}
layerRoot.removeChild(layerRoot.lastChild);
}
Thanks for taking the time to consider my questions,
elshae
On Tue, Oct 19, 2010 at 4:17 PM, IT Intern <itintern12 at gmail.com> wrote:
> Hello GeoExt Friends,
>
> So I have been using the GeoExt and Ext libraries to develop my map browser
> and now there's a feature I'd like to have, but don't know how to go about
> it :)
>
> So far everything is working. What I have is a tree panel that when a menu
> is clicked a parent node with layer containers is added to the tree. The
> layers in these containers are in different languages, so as the user
> toggles between the languages in the menu, it be nice if the layers in the
> previous language correspond to the language that is currently selected. I
> hope you will understand what I am asking to do. I guess a good starting
> point would be, is there a way to "get" which layers are selected in a layer
> container? Thanks for your time, below is some relevant code:
>
> //So there are many layers, one each per language...
>
> var chn_townships = new OpenLayers.Layer.WMS(
> "Townships (Chinese trans)", "
> http://localhost:8080/geoserver/wms", {layers: 'cite:chn_townships',
> transparent: true}, {isBaseLayer: false, displayInLayerSwitcher: true,
> visibility: false}
> );
>
> var tib_townships = new OpenLayers.Layer.WMS(
> "Townships (Tibetan trans)", "
> http://localhost:8080/geoserver/wms", {layers: 'cite:tib_townships',
> transparent: true}, {isBaseLayer: false, displayInLayerSwitcher: true,
> visibility: true}
> );
>
> //The layers are stored in layer stores...
> var tibLands = new GeoExt.data.LayerStore({
> map: map,
> initDir: 0,
> layers: [tib_villages, tib_townships, tib_farms,
> tib_countys]
> });
>
> var chnLands = new GeoExt.data.LayerStore({
> map: map,
> initDir: 0,
> layers: [chn_villages, chn_townships, chn_farms,
> chn_countys]
> });
>
> //Menu for users to select language
> var languageMenu = new Ext.menu.Menu({
> id: 'mainMenu',
> style: {
> overflow: 'visible' // For the Combo popup
> },
> items: [
> // A Field in a Menu
> {
> text: 'Chinese',
> checked: false,
> group: 'theme',
> icon: './gif/cn.gif',
> handler: checkHandler
> },{
> text: 'English',
> checked: true,
> group: 'theme',
> handler: checkHandler
> },{
> text: 'Tibetan',
> checked: false,
> group: 'theme',
> handler: checkHandler
> }
> ]
> });
>
> //The handler function that listens to the users selection on the menu
> (This is where I want the magic to happen ;)
> function checkHandler(item, checked) {
> var tibetContainer, chineseContainer;
>
> if(item.text == 'Tibetan'){
> if(layerRoot.lastChild.id == 'chinese'){
> layerRoot.removeChild(layerRoot.lastChild);
> }
>
> tibetContainer = new Ext.tree.TreeNode({
> text: "Tibetan Labels",
> expanded: true,
> id: 'tibet'
> });
>
> tibetContainer.appendChild(new
> GeoExt.tree.OverlayLayerContainer({
> text: "Lands (Tibetan trans)",
> layerStore: tibLands,
> expanded: false,
> loader: {param: "LAYERS"}
> }));
>
> tibetContainer.appendChild(new
> GeoExt.tree.OverlayLayerContainer({
> text: "Natural Selection (Tibetan trans)",
> layerStore: tibNaturalLayers,
> expanded: false,
> loader: {param: "LAYERS"}
> }));
>
> tibetContainer.appendChild(new
> GeoExt.tree.OverlayLayerContainer({
> text: "Points of Interest (Tibetan trans)",
> layerStore: tibPointOfInterest,
> expanded: false,
> loader: {param: "LAYERS"}
> }));
>
> layerRoot.appendChild(tibetContainer);
>
> }
> else if(item.text == 'Chinese'){
>
> chineseContainer = new Ext.tree.TreeNode({
> text: "Chinese Labels",
> expanded: true,
> id: 'chinese'
> });
>
> chineseContainer.appendChild(new
> GeoExt.tree.OverlayLayerContainer({
> text: "Lands (Chinese trans)",
> layerStore: chnLands,
> expanded: false,
> loader: {param: "LAYERS"}
> }));
>
> chineseContainer.appendChild(new
> GeoExt.tree.OverlayLayerContainer({
> text: "Natural Selection (Chinese trans)",
> layerStore: chnNaturalLayers,
> expanded: false,
> loader: {param: "LAYERS"}
> }));
>
> chineseContainer.appendChild(new
> GeoExt.tree.OverlayLayerContainer({
> text: "Points of Interest (Chinese trans)",
> layerStore: chnPointOfInterest,
> expanded: false,
> loader: {param: "LAYERS"}
> }));
>
> if(layerRoot.lastChild.id == 'tibet'){
>
> //layerRoot.removeChild(layerRoot.lastChild);
> layerRoot.replaceChild(chineseContainer,
> layerRoot.lastChild) //thought this might have done it, this just replaces
> the nodes but not the layers selected to the new ones :(
> }else
> {layerRoot.appendChild(chineseContainer);}
>
> }
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.geoext.org/pipermail/users/attachments/20101020/fa2468ae/attachment.htm
More information about the Users
mailing list