IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

Reprojection et centrage outre-mer


Sujet :

IGN API Géoportail

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut Reprojection et centrage outre-mer
    Bonjour,

    NB : Ceci est une demande que j'ai également posté sur forumsig, si j'ai une réponse sur l'un ou l'autre forum, je ferais suivre.

    Je dispose d'une carte OpenLayers (Sur ma page il y a une carte Géoportail et une carte OpenLayers en parallèle que j'affiche dans une projection différente) que je souhaite centrer sur des coordonnées précises. Dans certaines projections le centrage fonctionne, mais pas dans d'autres.

    Voila un exemple sur la Guyane, je dispose des coordonnées du centre en degrés décimaux et j'ai un objet Openlayers.Map "map" qui se trouve dans la projection EPSG:32622.
    Les coordonnées projetées par OpenLayers sont bonnes, et quand j'applique successivement un setCenter, puis un getCenter, je retrouve les même coordonnées. Tout est normal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Centre fourni : lon=-52.305277778,lat=4.932222222
    map.getProjection() : EPSG:32622
    Centre projeté : lon=355277.0925796331,lat=545314.0038016536
    map.setCenter()
    map.getCenter() : lon=355277.0925796331,lat=545314.0038016536
    Voila maintenant un exemple sur la Guadeloupe. Mêmes manipulations (les coordonnées projetées sont bonnes) mais là, après avoir appliqué le setCenter puis récupéré le centre, je ne retombe pas du tout sur le bon endroit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Centre fourni : lon=-61.732777778,lat=15.996111111
    map.getProjection() : EPSG:32620
    Centre projeté : lon=635594.1589198911,lat=1768918.4727993724
    map.setCenter()
    map.getCenter() : lon=-15369365.386820504,lat=0
    Le centrage fonctionne pour les projections de Métropole (EPSG:2154), Guyane (EPSG:32622) et Mayotte (EPSG:4471), mais m'envoie dans les choux pour Guadeloupe/Martinique (EPSG:32620), Réunion (EPSG:2975) et Saint-Pierre et Miquelon (EPSG:4467)).

    Est-ce que quelqu'un aurait une idée de la source du problème ?

    Merci d'avance pour toute piste.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut
    Sans url, c'est toujours difficile de répondre.
    As-tu vérifié, avec Firebug par exemple, qu'il n'y avait aucune demande au niveau réseau vers le site d'epsg ?

    Un dump de new OpenLayers.Projection("EPSG:32620") donne
    "+proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs" ?
    et pour "EPSG:32622"
    "+proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Les coordonnées projetées à la 3ème ligne sont calculées par openlayers à partir des coordonnées affichées sur la 1ère ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mapCenter = geopCenter.transform(OpenLayers.Projection.CRS84, map.getProjection());
    J'en déduis qu'openlayers connait parfaitement la projection en question puisque son calcul donne un bon résultat.

    C'est au moment du setCenter qu'il y a un problème. La carte refuse d'être centrée aux coordonnées calculées.

    Je penche donc plutôt pour un problème au niveau de l'objet carte, bien que ses options de création soient très simples.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    options = {
      controls: [],
      //maxExtent: ter.bounds, // dans la projection du territoire
      projection: ter.projection,
      units: 'm',
      resolutions:[2048,1024,512,256,128,64,32,16,8,4,2,1,0.5,0.25,0.125],
      minZoomLevel:0,
      maxZoomLevel:12
    };
    Et ça n'expliquerait pas pourquoi certaines projections marchent et d'autres non.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Est-ce qu'une version debug de l'api existe pour plus facilement tracer ce qu'il se passe ?
    Je n'en trouve pas trace dans la doc.

  5. #5
    Membre averti
    Femme Profil pro
    Consultante SIG
    Inscrit en
    Mars 2011
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultante SIG

    Informations forums :
    Inscription : Mars 2011
    Messages : 233
    Points : 356
    Points
    356
    Par défaut
    Bonjour,
    ci-dessous les urls de l'api JS decompressée:

    API standard:
    http://api.ign.fr/geoportail/api/js/...talStandard.js

    API étendue:
    http://api.ign.fr/geoportail/api/js/...b/Geoportal.js

    API minimum:
    http://api.ign.fr/geoportail/api/js/...eoportalMin.js

    Merci pour la remarque, nous les rajouterons à la documentation le plus rapidement possible.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Merci, ça m'a permis d'avancer un peu.

    Lorsque je créé la carte je ne précise pas son étendue dans les options (maxExtent)

    Et même si je le fais l'étendue renvoyée par map.getMaxExtent() est différente de celle que j'ai spécifiée dans les options de la carte.

    Le maxExtent explique pourquoi le centrage échoue. Le centre que j'essaye d'affecter est hors du maxExtent. Mais selon moi le maxExtent est erroné.

    Pour La Réunion (EPSG:2975):

    à la création de la carte je précise l'option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maxExtent: new OpenLayers.Bounds(
    	310000, 7620000,
    	390000, 7700000
    )
    Le maxExtent de ma carte (renvoyé par un map.getMaxExtent()) est :
    bottom = -17681544.866712403
    left = 499999.9999999996
    right = 37111133.189409226
    top = 37681544.86671241
    (donc comme si je n'avais pas précisé l'option)

    Or j'aimerais centrer en lon=338767.167364242, lat=7690355.572354535
    Clairement ça ne colle pas en longitude. L'étendue autorisée est fausse.
    (à comparer avec l'étendue projetée sur spatialreference : http://www.spatialreference.org/ref/epsg/2975/)

    D'où vient le maxExtent de la carte quand on ne l'a pas précisé à la création de l'objet map ?

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Comme l'a écrit mga_geo sans code complet on ne peut que perdre du temps à deviner ce qui est fait ...

    Si tu utllises l'API Géoportail, l'emprise des cartes est définie par l'autoconfiguration et les emprises sont justes.

    Si tu utilises OpenLayers, alors il faut donner les emprises dans le système de la carte en définissant donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    projection: new OpenLayers.Projection("EPSG:2975"),
    maxExtent: new OpenLayers.Bounds(292811.49,7621188.67,
    395725.00n7732868.42)
    J'ai pris comme emprise de la Réunion : 55, -21.5, 56, -20.5
    Et les transformations de coordonnées ont été effectuées via PROJ.4 ...
    On obtient donc pas la même emprise

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    L'emprise que j'ai donné est juste à peine plus restrictive que l'emprise géoportail. ça correspond à l'emprise des données que je veux afficher.

    Voici un extrait du code, je l'ai réduit au minimum et qui est suffisant pour reproduire le problème.

    Ma page est appelée avec un paramètre "ter" qui prend pour valeur un code de 3 caractères correspondant aux territoires disponibles avec l'api geoportail (enfin pour le code ci dessous j'ai gardé uniquement FXX et REU). (mapage.php?ter=FXX|REU)

    Il y a 2 cartes sur la page :
    • geop : carte géoportail, initialisée avec Geoportal.log, contenant uniquement des couches Geoportail (div pourtant l'id "geopDiv")
    • map : carte openlayers, qui contient des couches de données perso (div portant l'id "map")


    Je n'arrive pas à joindre le html à ce message, donc je ne mets que le javascript. (il n'y a quasiment rien dans le html, le chargement de l'api dernière version dans l'entête, les 2 div (style = #map, #geopDiv{width:800px; height:300px; border:solid 1px #000;} ) puis le javascript ci-dessous).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    // Récupération des paramètres GET et définitions des quelques variables globales
    var map; //carte ol
    var geop; //carte geoportail
    var layer25k; //couche de base perso au 25k
    var servers = {
      wmsGeoserver: "http://serveur:8080/geoserver/wms" //pour le test, ça a peut d'importance que le serveur fonctionne ou contienne les couches souhaitées
    }
    var geopKey = "ma clé géoportail";
    
    var ter = {
      str: "<?php echo $_GET["ter"]; ?>",
      defaultCenter: {lon:2.548828, lat:47.739323}, //centre par defaut sur carte geop
      defaultZoom: 6, //zoom par defaut sur carte geop
      layerGroup25k: "vFrance25k", //nom du layergroup geoserver pour carte map
      projection: "EPSG:2154", //projection pour carte map
      bounds: new OpenLayers.Bounds(
    	80000, 6040000,
    	1260000, 7120000
      ) //extent pour carte map
    };
    
    if (ter.str === "REU") {
      ter.defaultCenter = {lon:55.45, lat:-20.88};
      ter.defaultZoom = 15;
      ter.layerGroup25k = "v25k-REU";
      ter.projection = "EPSG:2975";
      ter.bounds = new OpenLayers.Bounds(
    	310000, 7620000,
    	390000, 7700000
      );
    }
    
    // (...) autres territoires
    
    
    //callback de Geoportal.load, création de la carte "map"
    function initialize() {
      var options = {
    	controls: [],
    	maxExtent: ter.bounds, // dans la projection du territoire
    	projection: new OpenLayers.Projection(ter.projection),
    	units: 'm',
    	//maxResolution: 6650,
    	resolutions:[2048,1024,512,256,128,64,32,16,8,4,2,1,0.5,0.25,0.125],
    	minZoomLevel:0,
    	maxZoomLevel:12
      };
      map = new OpenLayers.Map('map', options); // essayé aussi avec Geoportal.Maps, ça ne change rien pour mon utilisation de l'objet
    
      //Couche de base perso au 25k
      layer25k = new OpenLayers.Layer.WMS(
    	"Geoserver layers - Tiled", servers.wmsGeoserver,
    	{//Params
    		LAYERS: ter.layerGroup25k,
    		format: "image/png"
    	},
    	{//Options
    		buffer: 0,
    		displayOutsideMaxExtent: false,
    		isBaseLayer: true,
    		singleTile:true,
    		ratio: 1.2
    	} 
      );
    
      map.addLayers([layer25k]);
    
      map.addControl(new OpenLayers.Control.Navigation());
    
      // centrage, la partie problématique
      geopCenter = new OpenLayers.LonLat(ter.defaultCenter.lon, ter.defaultCenter.lat);
      console.log("Centre fourni : "+geopCenter);
      mapCenter = geopCenter.transform(OpenLayers.Projection.CRS84, map.getProjection());
      console.log(map.getProjection()); // dans firebug je n'ai pas qu'une chaine, j'ai un objet OpenLayers.Projection
      console.log(map.getMaxExtent()); // j'ai une étendue, ok pour FXX, foireuse pour REU
      console.log("Centre projeté : "+mapCenter); // centre correct
      console.log("map.setCenter()");
      map.setCenter(mapCenter, 1*ter.defaultZoom - 5); //les niveaux de zoom des 2 cartes sont décalés
      console.log("map.getCenter() : "+map.getCenter()); // centre correct pour FXX, qui correspond à celui 2 lignes avant, centre foireux pour REU
    
    }
    
    
    function checkApiLoading(retryClbk,clss) {
    	var f, i, l;
    	if (__Geoportal$timer != null) {
    		//clearTimeout: annule le minuteur "__Geoportal$timer" avant sa fin.
    		window.clearTimeout(__Geoportal$timer);
    		 __Geoportal$timer = null;
    	}
    
    	// Il se peut que l'init soit exécuté avant que l'API ne soit chargée.
    	//Ajout d'un code temporisateur qui attend 300 ms avant de relancer l'init.
    	for (i = 0, l = clss.length; i < l; i++) {
    		try {
    			f = eval(clss[i]);
    		} catch (e) {
    			f = undefined;
    		}
    		if (typeof(f) === 'undefined') {
    			 __Geoportal$timer = window.setTimeout(retryClbk, 300);
    			return false;
    		}
    	}
    	return true;
    }
    
    if (window.__Geoportal$timer === undefined) {
        var __Geoportal$timer = null;
    }
    	
    // Initialisation de la carte geop
    (function loadAPI() {
    	// on attend que les classes soient chargées
    	if (checkApiLoading('loadAPI();', ['OpenLayers', 'Geoportal', 'Geoportal.Viewer', 'Geoportal.Viewer.Default']) === false) {
    		return;
    	}
    		
         geop = Geoportal.load('geopDiv', [geopKey], ter.defaultCenter, ter.defaultZoom,
    	{
    		language: 'fr',
    		territory: ter.str,
    		layers: ['GEOGRAPHICALGRIDSYSTEMS.MAPS'],
    		layersOptions: {'GEOGRAPHICALGRIDSYSTEMS.MAPS':{opacity:1.0}},
    		overlays: {},
    		geormUrl: "../communs/geoportail/autoconf.json", //fichier d'autoconf perso
    		onView: initialize 	
    	}
         );
    		
    })();
    Avec le code réduit, je reproduit l'erreur de centrage sur la Réunion (la carte geoportail s'affiche et se centre correctement, pas l'autre).

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut Firebug est mon ami ...
    J'ai fait une page d'essai car c'est à peu près la seule méthode simple de partager ces problèmes et j'ai eu la réponse avec Firebug
    cf http://mga.alwaysdata.net/geoportail...ylvaingeo.html
    Donc cette erreur est peut-être due à cet exemple réduit mais c'est à creuser !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Sur ta page, le chargement de l'api est fait après mon script. C'est pour ça qu'il ne connait pas OpenLayers
    Dans mon cas j'ai mis le chargement de l'api tout de suite dans la partie head de la page.

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut
    Dans la nouvelle version de l'API, le chargement ne doit pas être fait dans le HEAD.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Bon alors 2 solutions pour se conformer à cette nouvelle règle :

    - la plus rapide : mettre le chargement de l'api avant mon javascript

    ou

    - placer la définition des ter.bounds dans le corps de la fonction initialize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (ter.str === "FXX") {
      ter.bounds = new OpenLayers.Bounds(
    	80000, 6040000,
    	1260000, 7120000
      );
    } else if (ter.str === "REU") {
      ter.bounds = new OpenLayers.Bounds(
    	310000, 7620000,
    	390000, 7700000
      );
    }
    et exécuter loadAPI() seulement quand le document est prêt (au lieu de la lancer tout de suite comme je le faisais parce que c'était la dernière chose écrite sur la page).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="loadAPI();">

    PS : je regarde de mon coté pour l'héberger moi même sur un serveur public...

    and voila :
    http://sylvaingeo.alwaysdata.net/extract.php?ter=FXX
    http://sylvaingeo.alwaysdata.net/extract.php?ter=REU
    Le but n'est pas de montrer un fond de carte, ce qui compte c'est ce qui s'affiche dans la console.

    Chose que j'aurais du faire plus tôt. ça ira plus vite les prochaines fois.
    Merci d'y avoir déjà passé du temps.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Est-ce que quelqu'un a pu jeter un oeil sur cette page avec la console ouverte ?
    http://sylvaingeo.alwaysdata.net/extract.php?ter=REU

    Et a une idée de pourquoi les coordonnées sont différentes sur les lignes "Centre projeté" et "map.getCenter()" ?

    Je n'ai pas encore trouvé de solution de mon côté.

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut
    Essaye d'afficher les points dans une même projection !
    Je ne connais pas la projection du map.getCenter() ...
    C'est plus facile d'inspecter des variables globales, console.log ne donne pas assez d'informations.
    map_getCenter = map.getCenter();
    console.log("map.getCenter() : " + map_getCenter ...

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    map, la carte openlayers, est une variable globale, je pense que ça donne accès aux mêmes choses.
    J'ai changé la façon dont les messages s'affichent dans la console pour avoir des résultats autres que textuels.

    La projection du centre de la carte est renvoyée par map.getCenter() dans la projection de la carte qu'on peut connaitre par un map.getProjection(). Mais ce n'est pas explicitement contenu dans l'objet OpenLayers.LonLat

    C'est vérifiable en lançant dans la console une reconversion en degrés décimaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> map.getCenter().transform(map.getProjection(), OpenLayers.Projection.CRS84)
    On retombe sur les degrés décimaux de la première ligne sur la page avec ?ter=FXX mais pas avec ?ter=REU

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Le problème vient selon moi bien de l'API Géoportail, qui réécrit le maxExtent de ma carte projetée, de façon erronée pour certains territoires.

    J'en arrive à cette conclusion parce que j'arrive à une page qui fonctionne : avec 2 cartes (une en webmercator et une dans une autre projection dépendant d'un territoire) centrées correctement, en créant la page avec OpenLayers (2.12) et sans utiliser l'API Geoportail.

    Sur la carte en webMercator sur laquelle je veux afficher les tuiles cartes IGN, j'utilise le flux WMTS directement. (comme expliqué ici : http://www.forumsig.org/showthread.php?t=34461#9)

    Cette façon de faire nécessite de revoir en profondeur mes pages en me faisant abandonner l'api javascript (Geoportal.load c'était quand même pratique !).

Discussions similaires

  1. Centrage sur territoire outre-mer
    Par sylvaingeo dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 14/11/2012, 12h01
  2. [C#] Problème de centrage de la souris dans un formulaire.
    Par aegypius dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/10/2004, 11h46
  3. [VB.NET] Centrage text
    Par Emcy dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/08/2004, 09h24
  4. [débutant][JSplitPane] Centrage des composants
    Par gcore dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 17/06/2004, 19h11
  5. [swing]Centrage du texte d'un JTextArea
    Par Lezoul dans le forum Composants
    Réponses: 3
    Dernier message: 15/06/2004, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo