2011-10-28 1 views
2

ページ全体が完全に読み込まれるまでは削除されないマスクをページ全体に表示したいと考えています。具体的には、OpenLayersとGeoExtで作成したマップがあり、ExtJSのloadMaskを使用しようとしています。しかし、私は使用したくないマニュアルのsetTimeoutを使用する以外に、他のやり方を見つけることができませんでした。私はむしろページが完全にロードされている場合にのみマスクを削除しておきたい。私は、OpenLayersをマップ上の「loadend」イベントを使用するだけでなくwindows.onloadなどなどしようとしています:GeoExt MapPanelが完全に読み込まれるとLoadMaskが正しく削除される

マイマップと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

+0

。 http://trac.osgeo.org/openlayers/wiki/Addins/LoadingPanel 地図レイヤーをズームイン/ズームアウトするたびにロードマスクが表示されますが、これは実際には素晴らしいです。私はまだこの問題に対する他のアプローチを知っているのは興味深い。 – elshae

答えて

0

イベントを追加 'onMapReadyちょうどそうのような項目の後に:これまでのところ、私はLoadingPanel溶液を用いて行っている

onMapReady: function() { 
    Ext.getBody().unmask(); 
} 
関連する問題