#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
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
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
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
Re: [Openlayers] Fonctionnalités d'export
René-Luc,
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.
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
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