[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