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 28 May 2009 11:14

nicolas.leclerc
Participant actif
Date d'inscription: 8 Apr 2009
Messages: 78

[Openlayers] Fonctionnalités d'export

Bonjour,

J'aimerais savoir si il était possible, à quels formats et comment l'on pouvait exporter des cartes sous open layers ( il me semble que l'export en pdf est impossible)

merci d'avance

Hors ligne

 

#2 Thu 28 May 2009 15:34

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

Re: [Openlayers] Fonctionnalités d'export

Bonjour,

Cela est possible mais avec une astuce  si tu utilises uniquement des services WMS, tu réalises une requêtes WMS qui demande la bbox que tu utilises dans OL ainsi que les couches activées.

Si tu as plusieurs fournisseurs WMS différents, il faudra gérer la fusion des couches soit en passant par un autre mapfile, soit par des scripts de fusion d'image.

Si tu utilises Google Map comme fond de carte, tu peux uniquement imprimer la carte qui s'affiche. L'astuce est de créer une page spécifique pour la mise en page lors de l'impression. Seulement, seul Firefox 3.* gère la transparence des couches au niveau de l'impression sad

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

 

#3 Thu 28 May 2009 17:00

nicolas.leclerc
Participant actif
Date d'inscription: 8 Apr 2009
Messages: 78

Re: [Openlayers] Fonctionnalités d'export

merci de ta réponse,
le souci premier est que tout le monde est sous IE dans l'entreprise alors cela devient tt de suite plus compliqué. j'aimerai juste savoir comment on peut créer une icône d'export en png.

je n'ai pas trouvé non plus le moyen de mettre une échelle dynamique.

merci d'avance

Hors ligne

 

#4 Thu 28 May 2009 17:13

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

Re: [Openlayers] Fonctionnalités d'export

Bonjour,

Pour le coups tu dois passer par la première manière, et cela n'ait absolument pas lié au navigateur. Tu crées un bouton qui appelles les données d'OL (bbox de la carte, couches actives) et tu lances la requêtes qui va bien, côté serveur tu récupères ces paramètres, tu appelles le service WMS et tu affiches ta page de résultat avec l'image récupérer par le service WMS.

Si tu veux transformer la page html en PDF tu as des bibliothèques qui font ca.

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

 

#5 Thu 28 May 2009 17:41

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: [Openlayers] Fonctionnalités d'export

Comme le dit Yves, puisque tu es sous IE, si tu veux un export de ta carte, celui-ci doit ce faire sur le serveur. Par exemple il est impossible de demander à un script JavaScript exécuter au sein du navigateur de créer un PDF.

Si tu veux ajouter une échelle dynamique dans ta carte OpenLayers, tu peux utiliser le contrôle Openlayers.Control.ScaleLine

Hors ligne

 

#6 Fri 29 May 2009 09:21

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

Re: [Openlayers] Fonctionnalités d'export

René-Luc,

René-Luc D'Hont a écrit:

Comme le dit Yves, puisque tu es sous IE, si tu veux un export de ta carte, celui-ci doit ce faire sur le serveur. Par exemple il est impossible de demander à un script JavaScript exécuter au sein du navigateur de créer un PDF.


http://code.google.com/p/jspdf/ ??

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

 

#7 Fri 29 May 2009 09:42

nicolas.leclerc
Participant actif
Date d'inscription: 8 Apr 2009
Messages: 78

Re: [Openlayers] Fonctionnalités d'export

merci pour toutes ses infos, je vais m'atteler à créer ce bouton ! Pour l'échelle dynamique, j'ai fait l'ajout de map.addControl(new Openlayers.Control.ScaleLine());     mais ça ne fonctionne pas

Code:

<html>
    <head>
    <script src="../openlayers/lib/OpenLayers.js"></script>
  <style>
    #panel {
        right: 0px;
        height: 30px;
        width: 200px;
    }
    #panel div {
        float: left;
        margin: 5px;
    }
</style>
              
        <script type="text/javascript">

            var map;
            function init() {
                map = new OpenLayers.Map('map');

                
                //initialize the WMS layer here
                var wms = new OpenLayers.Layer.WMS(
                    "Fond communal",
                    "http://192.168.25.22/cgi-bin/mapserv.exe?map=C:/ms4w/Apache/htdocs/geoportail_aurh_commerce/geoportail_aurh_commerce2.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=rasterlh&STYLES=&SRS=EPSG:27561&BBOX=434871,191628,465019,219048&WIDTH=1200&HEIGHT=1200&FORMAT=image/png",
                    {layers: 'rasterlh'}
                );
      
                map.addLayers([wms]);
                
                
                
                var overview = new OpenLayers.Control.OverviewMap();
                map.addControl(overview);
                
                map.addControl(new OpenLayers.Control.LayerSwitcher());
                map.addControl(new OpenLayers.Control.MousePosition({
                div: document.getElementById("mouseposition")
                }));
                
                var panel = new OpenLayers.Control.Panel({
                div: document.getElementById("panel")
                });
                map.addControl(panel);

                var history = new OpenLayers.Control.NavigationHistory();
                map.addControl(history);
                panel.addControls([history.next, history.previous]);
                
                map.zoomToMaxExtent();
            
                map.addControl(new Openlayers.Control.ScaleLine());    
            

            
            }
                
        </script>
    </head>

    <body onload="init()">
        <div id="map"  style="width:100%; height: 80%"></div>
        <div id="mouseposition"></div>
        <div id="panel"></div>

    
    </body>
</html>

Hors ligne

 

#8 Fri 29 May 2009 09:50

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

Re: [Openlayers] Fonctionnalités d'export

Nicolas,

Tente de voir avec Firebug si les div de Scaneline ont bien été créé, et vérifie qu'il ne s'agisse pas d'un problème de CSS.

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

 

#9 Fri 29 May 2009 10:11

nicolas.leclerc
Participant actif
Date d'inscription: 8 Apr 2009
Messages: 78

Re: [Openlayers] Fonctionnalités d'export

d'après firebug pas de div créés, j'ai enlevé le petit bout de css de mon code et essayer de rajouter map.addControl(new OpenLayers.Control.PanZoomBar()); ça ne fonctionne toujours pas

Code:

<html>
    <head>
    <script src="../openlayers/lib/OpenLayers.js"></script>
            
    <script type="text/javascript">

            var map;
            function init() {
                map = new OpenLayers.Map('map');

                
                //initialize the WMS layer here
                var wms = new OpenLayers.Layer.WMS(
                    "Fond communal",
                    "http://192.168.25.22/cgi-bin/mapserv.exe?map=C:/ms4w/Apache/htdocs/geoportail_aurh_commerce/geoportail_aurh_commerce2.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=rasterlh&STYLES=&SRS=EPSG:27561&BBOX=434871,191628,465019,219048&WIDTH=1200&HEIGHT=1200&FORMAT=image/png",
                    {layers: 'rasterlh'}
                );
      
                map.addLayers([wms]);
                
                
                
                var overview = new OpenLayers.Control.OverviewMap();
                map.addControl(overview);
                
                map.addControl(new OpenLayers.Control.LayerSwitcher());
                map.addControl(new OpenLayers.Control.MousePosition({
                div: document.getElementById("mouseposition")
                }));
                
                map.addControl(new Openlayers.Control.ScaleLine());    
                
                map.addControl(new OpenLayers.Control.PanZoomBar());
                
                
                var panel = new OpenLayers.Control.Panel({
                div: document.getElementById("panel")
                });
                map.addControl(panel);

                var history = new OpenLayers.Control.NavigationHistory();
                map.addControl(history);
                panel.addControls([history.next, history.previous]);
                
                map.zoomToMaxExtent();

                map.addControl(new Openlayers.Control.ScaleLine("echelle"));    
                
                map.addControl(new OpenLayers.Control.PanZoomBar("zoom"));
            
            }
                
        </script>
    </head>

    <body onload="init()">
        <div id="map"  style="width:100%; height: 80%"></div>
        <div id="mouseposition"></div>
        <div id="panel"></div>
        <div id="echelle"></div>
        <div id="zoom"></div>
    
    </body>
</html>

merci d'avance

Dernière modification par nicolas.leclerc (Fri 29 May 2009 10:25)

Hors ligne

 

Pied de page des forums

Powered by FluxBB