Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Thu 11 October 2012 10:55

yo_haha
Participant occasionnel
Lieu: Martil
Date d'inscription: 28 Sep 2008
Messages: 47

[GeoExt][Geoserver][Module d'impression] Impression avec OpenLayers

Bonjour,

J'essaie d'intégrer la fonctionnalité d'impression de carte à mon application GeoExt/OpenLayers, à partir du module d'impression de Geoserver.
La carte OpenLayers.Map contient plusieurs layers, dont OpenStreetMap.
J'ai créé un bouton qui déclenche le processus d'impression et j'ai affecté le code suivant à ce bouton :

Code:

// Configuration de la connexion au service d'impression.
    var printProvider = new GeoExt.data.PrintProvider({
        method: "GET",
        capabilities: printCapabilities, 
        customParams: {
            mapTitle: "Navigueo",
            comment: "olpmijk"
        }
    });

// Bouton d'impression.
    print = new Ext.Button({
        iconCls: 'print',
        tooltip: "imprimer la carte",
        handler: function(){
            // Fenêtre d'aperçu avant impression.
            printDialog = new Ext.Window({
                title: "Aperçu avant impression",
                width: 500,
                autoHeight: true,
                items: [{
                    xtype: "gx_printmappanel",
                    map: {controls: [new OpenLayers.Control.Navigation()]},
                    sourceMap: mapPanel, // mapPanel est mon objet GeoExt contenant la carte.
                    printProvider: printProvider
                }],
                bbar: ['->',
                    {
                    text: "Exporter en PDF",
                    handler: function(){ 
                        printDialog.items.get(0).print(); 
                    }
                }]
            });
            printDialog.show();
            
        }
    });

L'objet printCapabilities est défini dans le fichier HTML :

Code:

<script src="http://ip-de-mon-serveur/geoserver/pdf/info.json?var=printCapabilities"></script>

Dans le fichier chemin/vers/geoserver/data/printing/config.yaml, j'ai ajouté dans la section hosts les deux lignes suivantes :

Code:

   - !dnsMatch
     host: tile.openstreetmap.org

Quand je clique sur le bouton qui lance l'impression de la carte, j'obtiens l'erreur suivante :

Code:

org.mapfish.print.InvalidJsonValueException: spec.layers[0].baseURL has an invalid value: http://a.tile.openstreetmap.org/ (spec.layers[0].baseURL has an invalid value: http://a.tile.openstreetmap.org/)

J'ai la même erreur en utilisant l'objet printCapabilities de Opengeo :

Code:

http://demo.opengeo.org/geoserver/pdf/info.json?var=printCapabilities

Si je ne mets pas la couche Open Street Map sur la carte, cette erreur n'apparaît pas.

Auriez-vous des pistes ?

Cordialement.

Hors ligne

 

#2 Fri 12 October 2012 13:27

yo_haha
Participant occasionnel
Lieu: Martil
Date d'inscription: 28 Sep 2008
Messages: 47

Re: [GeoExt][Geoserver][Module d'impression] Impression avec OpenLayers

C'est résolu ! Il suffit d'ajouter dans la section hosts : a.tile.openstreetmap.org au lieu de tile.openstreetmap.org.

Hors ligne

 

#3 Mon 15 October 2012 15:48

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: [GeoExt][Geoserver][Module d'impression] Impression avec OpenLayers

yo_hahan

Tu as aussi b.tile.openstreetmap.org et c.tile.openstreetmap.org à rajouter. Tu peux avoir des problèmes suivant le sous domaine utilisé.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#4 Mon 15 October 2012 16:08

yo_haha
Participant occasionnel
Lieu: Martil
Date d'inscription: 28 Sep 2008
Messages: 47

Re: [GeoExt][Geoserver][Module d'impression] Impression avec OpenLayers

a, b et c dépendent de la zone affichée dans le monde ou c'est arbitraire ?
Il n'y a que a, b et c ?

Hors ligne

 

#5 Tue 16 October 2012 18:28

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: [GeoExt][Geoserver][Module d'impression] Impression avec OpenLayers

Bonsoir,

Ce sont trois sous-domaine qui renvoie vers les mêmes tuiles du même serveur (a priori le même serveur).

Cela permet aux navigateurs de récupérer plus vite les tuiles (pour faire simple).

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

Pied de page des forums

Powered by FluxBB