Hi, After testing a little bit more, i found that if i use this code in the beforeprint listener it still complains about the encoding itself. So, i moved this code to the handler of a print button before calling the print method. Using this approach it works somehow but it removes all my vector layers from the map. As you told, i have cloned the legendPanel (using Ext.apply) and still get the same issue, all my vector layers are gone.
Here is the current code: var cloneLegPanel = {}; Ext.apply(cloneLegPanel, legendPanel); var legLayerStore = cloneLegPanel.layerStore; legLayerStore.each(function(record){ var layerRec = record.get('layer'); if (layerRec.CLASS_NAME == 'OpenLayers.Layer.Vector'){ legLayerStore.remove(record); } }); printProvider.print(mapPanel, printPage, {legend: cloneLegPanel}); With this code i get the legends in the mapfish print pdf but i cannot print vector layers and they are removed from the map. What would you suggest? The thing i don't understand is why my vectors layers are being removed when i'm using a cloned object of the GeoExt Legend Panel. Any ideas? Thanks once again, Hugo On Fri, Oct 7, 2011 at 2:09 PM, gbrun <gb...@myopera.com> wrote: > Hum, looking at your code, it might work! What does it happen with this > code? Vector layers are completely removed from the map, not only from the > legend panel? In this case, you should indeed clone your legend. Then, you > could remove vector layers from this cloned legend. A the end, you can > replace the old legend by the new one in your print function. > > I have never gone into this problem, so I have no ready-made solution! In > my app, I have deactivated the "print legend" capabilities when a vector > layer is contained in a map. > > Geoffrey > > > > Le Fri, 07 Oct 2011 14:49:34 +0200, Hugo <hfpmart...@gmail.com> a écrit: > > > Hello Geoffrey, >> >> Thanks a lot for your comments but my problem is exactly at destroying the >> legend printing for the vector layers. I have no idea on how to do this. I >> have tried the following but without success: >> >> beforeprint: function(printProv, printMap, printPages, printOpt){ >> var includeLegend = Ext.getCmp('includeleg').**getValue(); >> if (includeLegend == true){ >> var legOpt = printOpt.legend; >> var legLayerStore = legOpt.layerStore; >> legLayerStore.each(function(**layerRec){ >> var layerDef = layerRec.get('layer'); >> if (layerDef.ClASS_NAME == 'OpenLayers.Layer.Vector'){ >> legLayerStore.remove(layerRec)**; >> } >> }) >> } >> } >> >> So my question would be, how can i tell the printprovider to not print the >> legend for this type of layers? >> >> Thanks a lot, >> Hugo >> >> On Fri, Oct 7, 2011 at 8:37 AM, gbrun <gb...@myopera.com> wrote: >> >> Hi! >>> >>> I would rather use the "beforeprint" or the "beforeencodelayer" function >>> from the "printProvider" class. This function allows you to change some >>> parameters before layers are printed. So, trough this function, you can >>> test if your map contains vector layers. In this case, you can probably >>> find a way to destroy their relative legend from the print process. You >>> will find below an example: >>> >>> printProvider = new GeoExt.data.PrintProvider({ >>> method: 'POST', // 'POST' recommended for production use >>> ('GET' for >>> development) >>> capabilities: printCapabilities, // from the info.json >>> script in the html >>> listeners:{ >>> beforeprint: function(){ >>> // test each layer >>> // if the layer is vector, remove >>> it >>> from the printed legend >>> }, // or use the "beforeencodelayer" function >>> beforeencodelayer: function (printProvider, layer){ >>> // test each layer (easy with the layer >>> parameter provided by this >>> function!) >>> // if the layer is vector, remove >>> it >>> from the printed legend >>> } >>> } >>> }); >>> >>> I hope it might help you! >>> >>> Geoffrey >>> >>> >>> Le Thu, 06 Oct 2011 20:17:20 +0200, Hugo <hfpmart...@gmail.com> a écrit: >>> >>> > Hello once again, >>> > >>> > One more question though... If i still want to print legends without >>> wfs >>> > and >>> > vector layers, how can i avoid these layers being passed in the >>> request? >>> > >>> > At the moment i have: >>> > printProvider.print(mapPanel, printPage, {legend: legendPanel}); >>> > >>> > So i suppose i have to clone my legendPanel and set some properties for >>> > the >>> > layers i don't want to include in the legend. What would be the >>> approach >>> > to >>> > follow? >>> > >>> > Thanks, >>> > Hugo >>> > >>> > On Thu, Oct 6, 2011 at 2:48 PM, Hugo <hfpmart...@gmail.com> wrote: >>> > >>> >> Hello Chris and Geoffrey, >>> >> >>> >> Thanks a lot for your replies. I will look further into your >>> suggestions >>> >> and come back with feedback. >>> >> Cheers, >>> >> >>> >> Hugo >>> >> >>> >> >>> >> On Tue, Oct 4, 2011 at 8:15 PM, Christian Mayer >>> >> <ma...@terrestris.de>wrote: >>> >> >>> >>> ** >>> >>> Hello Hugo, >>> >>> >>> >>> for your second problem you may use the beforeprint event of the >>> >>> PrintProvider class, with the >>> >>> listener arguments: >>> >>> >>> >>> - printProvider - >>> >>> GeoExt.data.PrintProvider< >>> http://geoext.org/lib/GeoExt/**data/PrintProvider.html#** >>> GeoExt.data.PrintProvider<http://geoext.org/lib/GeoExt/data/PrintProvider.html#GeoExt.data.PrintProvider> >>> >this >>> >>> PrintProvider >>> >>> - map - OpenLayers.Map the map being printed >>> >>> - pages - Array of >>> >>> GeoExt.data.PrintPage< >>> http://geoext.org/lib/GeoExt/**data/PrintPage.html#GeoExt.** >>> data.PrintPage<http://geoext.org/lib/GeoExt/data/PrintPage.html#GeoExt.data.PrintPage> >>> >the >>> >>> print pages being printed >>> >>> - options - Object the options to the print command >>> >>> >>> >>> see: >>> >>> http://geoext.org/lib/GeoExt/**data/PrintProvider.html<http://geoext.org/lib/GeoExt/data/PrintProvider.html> >>> >>> >>> >>> Maybe you check and rearrange your map object here. >>> >>> >>> >>> Best regards, >>> >>> Chris >>> >>> >>> >>> Am 04.10.2011 19:58, schrieb gbrun: >>> >>> >>> >>> Hi Hugo, >>> >>> >>> >>> As far as I know, printing vector legend is not supported in the >>> >>> current >>> >>> GeoExt trunk. >>> >>> >>> >>> No idea for your second problem! >>> >>> >>> >>> Geoffrey >>> >>> >>> >>> >>> >>> Le Tue, 04 Oct 2011 17:15:01 +0200, Hugo <hfpmart...@gmail.com> >>> >>> <hfpmart...@gmail.com> a écrit: >>> >>> >>> >>> >>> >>> Hello all, >>> >>> >>> >>> I was able to implement printing using printprovider, printpage and >>> the >>> >>> printextent plugin. However i have some small bugs which, untill now, >>> i >>> >>> wasn't able to solve. >>> >>> >>> >>> The first problem i'm having is related with printing legends when >>> >>> having >>> >>> WFS layers on the map (firebuf is always showing: encFn is >>> undefined). >>> >>> I >>> >>> have checked the encoders part of the prinProvider.js and in fact i >>> >>> don't >>> >>> see WFS there. However there is an encoder for vector layers. So my >>> >>> first >>> >>> question would be is it possible to print legends with WFS? >>> >>> >>> >>> My second problem is related with layer order. When the app is >>> loaded, >>> >>> there >>> >>> are some initial layers that are loaded (WMS, WFS and TileCache). I >>> >>> also >>> >>> have the functionality to allow user to add additional layers >>> returned >>> >>> by >>> >>> WMS capabilities of geoserver. Because i wnated to keep all layers >>> that >>> >>> were >>> >>> initially loaded above all others i'm setting layers ZIndex >>> dynamically >>> >>> in >>> >>> the app. All is working fine when viewing and adding new layers (i >>> >>> always >>> >>> get inital loaded layers on top of the added ones). However, when >>> >>> trying >>> >>> to >>> >>> print, the added layers from wms capabilities are always on the top >>> of >>> >>> all >>> >>> others. More interesting is that, after printing, all layers are >>> >>> magically >>> >>> rearranged and in fact, the added layers become on top of all the >>> >>> others. >>> >>> What property am i missing here??? >>> >>> >>> >>> Kind regards, >>> >>> Hugo >>> >>> >>> >>> >>> >>> ______________________________**_________________ >>> >>> Users mailing >>> >>> listUsers@geoext.orghttp:// >>> www.geoext.org/cgi-bin/**mailman/listinfo/users<http://www.geoext.org/cgi-bin/mailman/listinfo/users> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> >>> Dipl.-Ing.(FH) Christian Mayer >>> >>> - Anwendungsentwickler - >>> >>> >>> >>> terrestris GmbH & Co. KG >>> >>> Irmintrudisstraße 17 >>> >>> 53111 Bonn >>> >>> >>> >>> Tel: ++49 (0)228 / 96 28 99 -53 >>> >>> Fax: ++49 (0)228 / 96 28 99 -57 >>> >>> >>> >>> Email: ma...@terrestris.de >>> >>> Web: http://www.terrestris.de >>> >>> >>> >>> Amtsgericht Bonn, HRA 6835 >>> >>> Komplementärin: terrestris Verwaltungsgesellschaft mbH >>> >>> vertreten durch: Hinrich Paulsen, Till Adams >>> >>> >>> >>> >>> >>> >>> >>> ______________________________**_________________ >>> >>> Users mailing list >>> >>> Users@geoext.org >>> >>> http://www.geoext.org/cgi-bin/**mailman/listinfo/users<http://www.geoext.org/cgi-bin/mailman/listinfo/users> >>> >>> >>> >>> >>> >> >>> >> >>> >> -- >>> >> Hugo Martins >>> >> LabNT - ISEGI UNL >>> >> Campus de Campolide >>> >> 1070-312 Lisboa >>> >> N 38°43'56.84", W 9°9'35.74" >>> >> >>> > >>> > >>> > >>> >>> >>> -- >>> -- >>> Geoffrey BRUN >>> >>> Étudiant en master SIGMA >>> Stagiaire au PNR du Haut-Languedoc >>> >>> Hameau de Brassac >>> Saint-Pons de Thomières >>> +33 (0) 6 77 74 44 16 >>> ______________________________**_________________ >>> Users mailing list >>> Users@geoext.org >>> http://www.geoext.org/cgi-bin/**mailman/listinfo/users<http://www.geoext.org/cgi-bin/mailman/listinfo/users> >>> >>> >> >> >> > > -- > -- > Geoffrey BRUN > > Étudiant en master SIGMA > Stagiaire au PNR du Haut-Languedoc > > Hameau de Brassac > Saint-Pons de Thomières > +33 (0) 6 77 74 44 16 > -- Hugo Martins LabNT - ISEGI UNL Campus de Campolide 1070-312 Lisboa N 38°43'56.84", W 9°9'35.74"
_______________________________________________ Users mailing list Users@geoext.org http://www.geoext.org/cgi-bin/mailman/listinfo/users