Помогите разобраться в коде

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
GeoNik
Новоприбывший
Сообщения: 7
Зарегистрирован: 14 ноя 2014, 14:36
Репутация: 0

Помогите разобраться в коде

Сообщение GeoNik » 17 дек 2014, 10:15

Доброго времени суток. Вот код

Код: Выделить всё

<html>
<head>

<title> A Basic GeoExt Page </title>
 <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.4.0/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.4.0/ext-all.js"></script>
        <link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-3.4.0/resources/css/ext-all.css" />
        <link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-3.4.0/examples/shared/examples.css" />
        <script src="http://www.openlayers.org/api/2.11/OpenLayers.js"></script>
       

	   <script type="text/javascript" src="http://localhost:8080/geoserver/www/GeoExt/script/GeoExt.js"></script>

<script type="text/javascript">
   
   var LayerNodeUI = Ext.extend(
    GeoExt.tree.LayerNodeUI,
    new GeoExt.tree.TreeNodeUIEventMixin()
);



   Ext.onReady(function() {
        		
		var map = new OpenLayers.Map();
		
		var layer = new OpenLayers.Layer.WMS(
            "Global Imagery",
            "http://maps.opengeo.org/geowebcache/service/wms",
            {layers: "bluemarble"}
        );
		
		
         var layer1 = new OpenLayers.Layer.WMS(
       "OpenStreetMap WMS",
            "http://ows.terrestris.de/osm/service?",
       {layers: 'OSM-WMS'}
    );
	     var layer2 = new OpenLayers.Layer.WMS(
       "ДЦ",
                "http://localhost:8080/geoserver/IGDG_data/wms", {
				layers: 'I_data:churchu',
				transparent:true
				});
		
				
         map.addLayers([layer,layer1,layer2]);
		

        var panel=new GeoExt.MapPanel({
		  center: [24, 50],
          zoom: 7,
	      region: "center",
		  map: map,
          
        });
		
		
var tree = new Ext.tree.TreePanel({
        title: 'Layers',
		width: 250,
		rootVisible: true,
		region: "west",
               
        autoScroll: true,
        enableDD: true,
        
        plugins: [{
            ptype: "gx_treenodecomponent"
        }],
        
		loader: {
            applyLoader: false,
            uiProviders: {
                "custom_ui": LayerNodeUI
            }
        },
        
		root: {
            nodeType: "gx_layercontainer",
            loader: {
                baseAttrs: {
                    uiProvider: "custom_ui"
                },
                
            }
        },
        
        lines: false
    });

			 
		 var viev=new Ext.Viewport({
            layout:'border',
            items: [panel, tree,
			   {
                    xtype: 'panel',
                    title: 'Верхня панель',
                    html: 'Верхня панель',
                    region: 'north',
                    height: 80
					
			    },{
                    xtype: 'panel',
                    title: 'Нижня панель',
                    html: 'Нижня панель',
                    region: 'south',
                    height: 200,
					collapsed: true,
					collapsible: true,
                    titleCollapse: true,
					split: true
					
                },{
                    xtype: 'panel',
                    title: 'Права панель',
                    html: 'Права панель',
                    region: 'east',
                    width: 120
                }] ,
                
         });
		
		
    });
</script>
</head>
<body>
<div id="gxmap"></div>
</body>
</html>
Мне не понятно что делает Ext.extend и вообще ее назначение в программе

Код: Выделить всё

var LayerNodeUI = Ext.extend(
    GeoExt.tree.LayerNodeUI,
    new GeoExt.tree.TreeNodeUIEventMixin()
);
Также не понятно, что выполняется в элементе ext.tree.TreePanel в этом куске кода

Код: Выделить всё

plugins: [{
            ptype: "gx_treenodecomponent"
        }],
        
		loader: {
            applyLoader: false,
            uiProviders: {
                "custom_ui": LayerNodeUI
            }
        },
        
		root: {
            nodeType: "gx_layercontainer",
            loader: {
                baseAttrs: {
                    uiProvider: "custom_ui"
                },
                
            }
        },
Как сделать чтобы базовые слои layer и layer1, были в одном root а layer2 в другом root?

И еще при отключении слоя layer2 в Ext.tree.TreePanel он исчезает с карты. Если сразу его включить то он появляется на карте только когда подвигать картой или при изменении масштаба. В чем проблема? Подозреваю что все дело в Ext.onReady но не знаю что именно.

Заранее благодарю!

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость