Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2013, 10:35
Новичок на форуме
Отправить личное сообщение для Shamandrey Посмотреть профиль Найти все сообщения от Shamandrey
 
Регистрация: 07.11.2013
Сообщений: 2

Как получить порядковый номер узла дерева относительно корня
Имеется вот такой код
Ext.onReady(function() {
	var store, tree, panel;
	var map = new OpenLayers.Map();
	// Создание WMS capabilities хранилища(массива)
	store = new GeoExt.data.WMSCapabilitiesStore({
		url: "http://localhost:8080/geoserver/ows?service=wms&version=1.1.1&request=GetCapabilities",
		autoLoad: true
	});
	// загрузка в массив всех записей и url ссылок на слои из Geoserver
	store.load();
	
	// Создание таблицы и визуализация ее на странице с последующе выгрузкой в нее массива с доступными слоями
	var grid = new Ext.grid.GridPanel({
		title: "WMS Capabilities",
		store: store,
		cm: new Ext.grid.ColumnModel([
			{header: "Name", dataIndex: "name", sortable: true},
			{id: "title", header: "Title", dataIndex: "title", sortable: true}
		]),
		sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
		autoExpandColumn: "title",
		renderTo: "capgrid",
		height: 300,
		width: 350,
		floating: true,
		x: 10,
		y: 0,
		bbar: ["->",
				"-", {
			text: "Add Layer",
			handler: function() {
				var record = grid.getSelectionModel().getSelected();
				if(record) {
					var copy = record.copy();
					
					copy.data["layer"] = record.getLayer();
					copy.getLayer().mergeNewParams({
						format: "image/png",
						transparent: "true"
					});
					panel.layers.add(copy);
					panel.map.zoomToExtent(
						OpenLayers.Bounds.fromArray(copy.get("llbbox"))
					);
				}
			}
		}, "-",
				
			"-",
			"-"]
		
	});
	var ctrl, toolbarItems = [], action, actions = {};
	
	action = new GeoExt.Action({
		control: new OpenLayers.Control.ZoomToMaxExtent(),
		
		text: "max extent",
		tooltip: "zoom to max extent"
	});
	actions["max_extent"] = action;
	toolbarItems.push(action);
	toolbarItems.push("-");
	
	
	
	
	
	
	// Создание окна карты
	panel = new GeoExt.MapPanel({
		renderTo: "mappanel",
		width: 1000,
		height: 700,
		
		floating: true,
		x: 400,
		y: 0,
		tbar: toolbarItems
	
	});
	// Создание дерева слоев
	tree = new Ext.tree.TreePanel({
		renderTo: "tree",
		root: new GeoExt.tree.LayerContainer({
			text: 'Map Layers',
			layerStore: panel.layers,
			leaf: false,
			expanded: true
		}),
		enableDD: true,
		width: 170,
		height: 300,
		floating: true,
		x: 10,
		y: 320,
		//Сдесь создается кнопка удаления слоя
		bbar: ["->",
				"-","-",{
			text: "Remuve Layer",
			handler: function() 
						{
							var selectedNode=tree.getSelectionModel().getSelectedNode( ) ;
							//alert(selectedNode.indexOf() );
							if(selectedNode)
								{
								//Сдесь происходит удаление выбранного узла в дереве слоев
									selectedNode.remove(true);
								// !!!Сдесь ДОЛЖНО происходить удаление слоя карты спорядковым номером выбранного узла в дереве
								//  слоев. Но пока что он удаляет слой с номером 0!!!
									 panel.map.layers[0].destroy();
								}
							 store.load();
						}
				
		},"-"]
		
	});
	

});


Каким образом мне передать номер выделенного узла в panel.map.layers[???].destroy()
Ответить с цитированием
  #2 (permalink)  
Старый 08.11.2013, 08:48
Новичок на форуме
Отправить личное сообщение для ka-5 Посмотреть профиль Найти все сообщения от ka-5
 
Регистрация: 31.10.2013
Сообщений: 5

Сообщение от Shamandrey Посмотреть сообщение
...
	// Создание дерева слоев
	tree = new Ext.tree.TreePanel({
		renderTo: "tree",
		root: new GeoExt.tree.LayerContainer({
			text: 'Map Layers',
			layerStore: panel.layers,
			leaf: false,
			expanded: true
		}),
...
                    if(selectedNode)
                    {
                        //Сдесь происходит удаление выбранного узла в дереве слоев
                        selectedNode.remove(true);
                        // !!!Сдесь ДОЛЖНО происходить удаление слоя карты спорядковым номером выбранного узла в дереве
                        //  слоев. Но пока что он удаляет слой с номером 0!!!
                        panel.map.layers[0].destroy();
                    }

Чисто теоретический совет: попробуй в консоль вывести содержимое selectedNode. Предполагаю, что т.к. дерево создаётся путём отображения из panel.layers, то в selectedNode.raw должна быть ссылка на объект твоего слоя, который нужно удалить, соответственно для него и нужно будет вызвать destroy(), а уж потом и для самого узла selectedNode.remove(true)
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2013, 10:48
Новичок на форуме
Отправить личное сообщение для Shamandrey Посмотреть профиль Найти все сообщения от Shamandrey
 
Регистрация: 07.11.2013
Сообщений: 2

За вывод в консоль спасибо!! Без нее не справился бы))
Вот как решил проблему.
tree = new Ext.tree.TreePanel({
		renderTo: "tree",
		root: new GeoExt.tree.LayerContainer({
			text: 'Map Layers',
			layerStore: panel.layers,
			leaf: false,
			expanded: true
		}),
		enableDD: true,
		width: 170,
		height: 300,
		floating: true,
		x: 10,
		y: 320,
		//Сдесь создается кнопка удаления слоя
		bbar: ["->",
				"-","-",{
			text: "Remuve Layer",
			handler: function() 
						{
							
						

							var selectedNode=tree.getSelectionModel().getSelectedNode( ) ;
							var num = panel.map.getNumLayers();
							var selectedNodeId=selectedNode.id;
							var nodfirstChild=tree.root;
							var iLayer;
							var i;
							//console.log(panel.map);
							if(selectedNode)
								{
									for (i = num-1; i>=0; i--)
										{
											if (selectedNodeId==nodfirstChild.childNodes[i].id)
												{
													iLayer=(i-num+1)*(-1);
													alert(iLayer);
													{
														selectedNode.remove(true);
														panel.map.layers[iLayer].destroy();
													}
												}
										}
								}
							 store.load();
						}
		},"-"]
		
	});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить порядковый номер элемента DOM ? dummer jQuery 7 17.01.2014 17:44
Как получить список элементов в localStorage? Бобр Общие вопросы Javascript 8 17.09.2013 14:32
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32
Как получить все атрибуты ноды? Victor_85 Events/DOM/Window 1 12.04.2010 17:58
Как получить позицию начала выделения? @LEXXX_NF Events/DOM/Window 3 28.08.2009 10:28