Hi Attila, please read below:
2011/1/26 BERÉNYI Attila <[email protected]>: > Dear All, > > I have a few question regarding GeoExt ux: SimplePrint. > 1. My original configuration applied TMS layers (MapProxy), and by default > it generates the following error: > I've tried to reconfigure it using override object, but neither the > type:'WMS' (#1), nor the duplicated layer definition (#2, defining a > 'hidden' WMS layer with the same content) helped. The overrides parameters > seems to be ignored. > > var TMSlayer = new OpenLayers.Layer.TMS('TMSLayerName', TMSService, { > layername: 'TMSLayerName', > type: 'png', > tileSize: new OpenLayers.Size(512, 512) > }); > > var WMSLayer = new OpenLayers.Layer.WMS('WMSLayerName', WMSService, { > layers: 'WMSLayerName', > format: 'image/png' > }, { > singleTile: true, > ratio: 1 > }, { > isBaseLayer: false, > visibility: false, > displayInLayerSwitcher: false > }); > > #1 > var overrides = { > 'TMSLayerName': { > baseURL: WMSService, > type: 'WMS', > layers: 'WMSLayerName' > } > }; > > #2 > var overrides = { > 'WMSLayerName': { > visibility: true > }, > 'TMSLayerName': { > visibility: false > }, > }; > > var printForm = new GeoExt.ux.SimplePrint({ > ... > overrides: overrides, > ... > }); > > TileCache layer works out of the box (override object is not required, but a > new virtual directory is needed). > var TCLayer = new OpenLayers.Layer.TileCache('TCLayerName', TCService, > 'TCLayerName', { > isBaseLayer: true, > ... > }); > > Can I use override parameter or it is not implemented yet? > i dont think override is there in GeoExt yet! (please somebody correct me if Im wrong) But there is another pretty elegant solution you can make: There are several events you can hook on, and change desired parameters before sending them to print. This is what i was doing: Define two more parameters for layer, such as printUrl and printLayerName ie: var WMSLayer = new OpenLayers.Layer.WMS('WMSLayerName', WMSService, { layers: 'WMSLayerName', format: 'image/png' }, { singleTile: true, ratio: 1 }, { isBaseLayer: false, visibility: false, displayInLayerSwitcher: false, printUrl: GeoserverWMS, printLayerName: }); and then just hook onto encodeLayer and change required parameters there. Heres an example: printProvider.on({ 'encodelayer' : function(provider, layer, encodedLayer){ if(layer.printUrl){ encodedLayer.baseURL = provider.getAbsoluteUrl(layer.printUrl); if(layer.printLayerName){ encodedLayer.layers = [layer.printLayerName].join(",").split(","); } } return encodedLayer; } }); Let us know if it worked! > 2. It is possible to print Google layers? I've set my config.yaml according > to the sample here: > http://trac.mapfish.org/trac/mapfish/browser/print/trunk/samples/configNonPremiumGoogle.yaml, > but the result is still a blank white page. > I'm using Google API v3, if it counts. > Looking into I dont see google encoder still, so I dont think this is possible (pleae correct me somebody) > 3. I wasn't able to use the POST method in the printprovider, the request > does not contain POST parameters, however GET works just fine. > var printProvider = new GeoExt.data.PrintProvider({ > //method: "POST", > method: "GET", > url: "proxy.cgi?url=http://localhost:8080/geoserver/pdf", > autoLoad: true > }); I didnt have any problems with POST (actually when config object gets bigger this is the only method you should use). Maybe some proxy problems? Hope this helps, Cheers > > Cheers, > Attila > > _______________________________________________ > Users mailing list > [email protected] > http://www.geoext.org/cgi-bin/mailman/listinfo/users > > -- Ivan Grcic _______________________________________________ Users mailing list [email protected] http://www.geoext.org/cgi-bin/mailman/listinfo/users
