Hi Phil,

I saw your posting regarding problems with google map layers and the 
GeoExt.tree.LayerContainer.  I was having a similar problem and came up with a 
workaround that made things work for me in both firefox and IE.  

I found that switching the layer visibility and resizing the mappanel caused 
the google layer to fill the mappanel when looking at the map in a browser.  I 
came up with a kludge that gets this to happen programmatically after the 
treepanel and mappanel have loaded.  I've included a minimal code snippet below 
that shows the workaround.  The last three lines are what make it work.  
Commenting all three lines make it return to the behavior with the map layer 
not displaying.  Commenting out the last 2 lines causes the behavior with the 
layer showing but only filling part of the window.  Commenting out just the 
last line causes the map to fill the mappanel, but not centered on the original 
center point.  Using all three make it work.

Ext.onReady(function(){
  var map = new OpenLayers.Map();
  map.addLayers([new OpenLayers.Layer.Google(
    "Google Physical",
    {type: G_PHYSICAL_MAP, visibility: true}
  ), new OpenLayers.Layer.Google(
    "Google Streets", 
    {numZoomLevels: 20}
  )]);

  var myLayerStore = new GeoExt.data.LayerStore({
    map: map
  });
  var mapViewer = new Ext.Panel({
    renderTo: 'mapviewerid',
    layout: 'border',
    width: 800,
    height: 600,
    collapsible: false,
    items:[{
        xtype: 'treepanel',
        id: 'westid',
        title: 'West',
        region: 'west',
        width: 200,
        collapsible: true,
        collapsed: true,
        root: new GeoExt.tree.LayerContainer({
          text: 'All Layers',
          layerStore: myLayerStore,
          leaf: false,
          expanded: true
        })
    }, {
      xtype: 'gx_mappanel',
      region: 'center',
      layout: 'fit',
      map: map,
      layers: myLayerStore,
      center: [-122, 38],
      zoom: 5
    }
    ]
  });
  // Kludge to make google and GeoExt.tree.LayerContainer play nice together
  // start with the treepanel collapsed
  // then these three steps in order make it work.
  // The combination of switching layers and causing the mappanel to resize 
  // gets the google layer to fill the mappanel
  map.layers[1].setVisibility(true);
  Ext.getCmp('westid').expand(false);
  map.layers[0].setVisibility(true);
});

The kludge allowed me to move forward.  It should also help debug the problem 
to figure out what events firing are needed to get google layers 
GeoExt.tree.LayerContainer to play nice.

Thanks,

Tom Baginski
  


_______________________________________________
Users mailing list
[email protected]
http://www.geoext.org/cgi-bin/mailman/listinfo/users

Reply via email to