[Users] GeoExt.ux.SimplePrint questions
Ivan Grcic
igrcic at gmail.com
Thu Jan 27 11:14:19 CET 2011
Hi Attila,
please read below:
2011/1/26 BERÉNYI Attila <atis at airdesignstudio.hu>:
> 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
> Users at geoext.org
> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>
>
--
Ivan Grcic
More information about the Users
mailing list