Правильно удалите LoadMask, как только GeoExt MapPanel будет полностью загружен - PullRequest
2 голосов
/ 28 октября 2011

Я хотел бы иметь маску для всей страницы, которая не будет удалена, пока вся страница не будет полностью загружена. В частности, у меня есть карта, созданная с помощью OpenLayers и GeoExt, и я пытаюсь использовать нагрузочную маску ExtJS. Тем не менее, я не смог найти никакого другого способа сделать это, кроме использования ручного setTimeout, который я не хочу использовать. Я бы предпочел удалить маску, только если страница полностью загружена. Я попытался использовать событие 'loadend' на карте openLayers, а также windows.onload и т. Д .:

Моя карта и конфигурация loadMask:

var mask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
    mask.show();

    Ext.onReady(function() {
        var options = {
                controls: [new OpenLayers.Control.Navigation()], 
                maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
                units: 'm',
                allOverlays: false 
        }

        var map = new OpenLayers.Map(options);

        map.events.register("loadend", map , function() {
            mask.hide(); alert('howdy');
        });

var mapPanel = new GeoExt.MapPanel({
            title: "Map",
            map: map,
            id: 'mapPanel',
            layerStore: map.layers,
            //Set the map to be centered at specified      longitude/latitude, transform our layers (SRID=4326) to display properly on Google
            //base layers (SRID=900913)  
            center: new OpenLayers.LonLat(95.20, 30.34).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")),
            zoom: 7, 
            region: "center",
            tbar: [measureLength, '-', measureArea, '-'],
            bbar: [
            {
                xtype: "label",
                text: "Scale = 1 : "                        
            }

            ],
            items: [{
                xtype: "gx_zoomslider",
                vertical: true,
                height: 300,
                aggressive: true,
                x: 10,
                y: 20,
                plugins: new GeoExt.ZoomSliderTip()
            }]
        });

Кажется, это событие никогда не происходит, так как я никогда не получаю предупреждающее сообщение. Я действительно очень хочу заставить это работать, другие попытки были:

window.onload = mask.hide();

после Ext.onReady и в конце тега, но затем маска скрывается до завершения загрузки карты. Кто-нибудь может поделиться какой-то проницательностью, я бы очень признателен!

elshae

1 Ответ

0 голосов
/ 06 июля 2012

Добавьте событие 'onMapReady' сразу после таких элементов:

onMapReady: function() {
    Ext.getBody().unmask();
}
...