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 :

Charger une image dans l'API


Sujet :

IGN API Géoportail

  1. #1
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut Charger une image dans l'API
    Le placement d'icones (images limitées en taille 32px*32px) dans l'API via les fichiers kml est déjà bien renseigné.

    Mais la question que je me pose, est de savoir comment (si c'est possible) introduire des images png aux dimensions supérieures à 100 px, via les kml (pour pouvoir les gérer comme des couches ), comme des "grosses icones" à l'échelle 1.

    Et cela sans les introduire par des ballonstyle.

  2. #2
    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
    J'ai du mal à comprendre le besoin

    Habituellement, les utilisateurs (dans la liste OpenLayers en tout cas) souhaitent savoir comment utiliser une image comme si c'était une couche comme une autre (ou presque). La réponse est alors: OpenLayers.Layer.Image ... Comme !

    Mais là, je comprends pô

    Au passage, la taille des pictos n'est pas limitée ...

  3. #3
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    Salut Didier,
    Ta réponse évidemment entraine d'autres questions de ma part:

    1. la taille des pictos n'est pas limitée ...
      Bizarre, parce que je n'arrive pas, par exemple, à afficher une image .png en 317pix*78pix à l'echelle 1 via balise <icon> par kml... Truc classique que je croyais maitriser. Cette image est réduite à une taille environ 40*40... Bien sur, je peux jouer sur <scale> mais alors l'image est très dégradée.... Mais si tu le dis, il va falloir que je travaille la question...
    2. D'où ma question avec ton renvoi vers OpenLayers.Layer.Image qui me semble intéressante à plus d'un titre... Mais alors là, je (re) butte sur la transposition du codage d'openlayers vers geoportail du fait de mon inexpérience en js. Cet exemple simple va peut-être me permettre de saisir mes erreurs. D'abord, je vais reprendre le code openlayer qui m'intéresse
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
       function init(){
                  map = new OpenLayers.Map('map');
                  // var options = {numZoomLevels: 3}; que je remplacerai par mes propres options
                  var graphic = new OpenLayers.Layer.Image(
                      'City Lights',
                      'http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif',
                      new OpenLayers.Bounds(-180, -88.759, 180, 88.759),
                      new OpenLayers.Size(580, 288)//,
                    //  options
                  );
                map.addLayer(graphic);// dans le codage OL initial la ligne était   "map.addLayers([graphic, jpl_wms]);" mais comme je ne m'intéresse qu'à graphic ....
    3. Je pensais pouvoir transposer ce bout de code dans ma fonction :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      function initGeoportalMap() {
          
          geoportalLoadviewer("GeoportalviewerDiv", "normal");
          viewer.addGeoportalLayer('GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC', {opacity:1.0});...
    4. De la manière suivante:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
       var graphic = new OpenLayers.Layer.Image(
                      'vivlig',
          './image/titrev00.png',
                     new OpenLayers.Bounds(4.3231201,45.0657615,4.35,45.07),
                      new OpenLayers.Size(317, 78) );viewer.getMap().addLayer(graphic, ,"vivlig",{visibility: true,opacity:1.0});
    5. Mais la couche vivlig ne s'affiche pas. J'ai bien bidouillé autour de ce schéma, sans grand résultat. Je me doute bien que tu vas sourire de mon ignorance, mais ta réponse me permettra de mieux appréhender mes futures transpositions OL vers Geoportail.

    Merci

  4. #4
    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
    Citation Envoyé par cmail Voir le message
    1. Bizarre, parce que je n'arrive pas, par exemple, à afficher une image .png en 317pix*78pix à l'echelle 1 via balise <icon> par kml... Truc classique que je croyais maitriser. Cette image est réduite à une taille environ 40*40... Bien sur, je peux jouer sur <scale> mais alors l'image est très dégradée.... Mais si tu le dis, il va falloir que je travaille la question...
    Il faut utiliser la balise <icon> certes, mais aussi les attributs w, h. Par défaut, avec scale à 1 (valeur par défaut), la taille de l'image est 32 x 32.

    Citation Envoyé par cmail Voir le message

    1. D'où ma question avec ton renvoi vers OpenLayers.Layer.Image qui me semble intéressante à plus d'un titre... Mais alors là, je (re) butte sur la transposition du codage d'openlayers vers geoportail du fait de mon inexpérience en js. Cet exemple simple va peut-être me permettre de saisir mes erreurs. D'abord, je vais reprendre le code openlayer qui m'intéresse
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
       function init(){
                  map = new OpenLayers.Map('map');
                  // var options = {numZoomLevels: 3}; que je remplacerai par mes propres options
                  var graphic = new OpenLayers.Layer.Image(
                      'City Lights',
                      'http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif',
                      new OpenLayers.Bounds(-180, -88.759, 180, 88.759),
                      new OpenLayers.Size(580, 288)//,
                    //  options
                  );
                map.addLayer(graphic);// dans le codage OL initial la ligne était   "map.addLayers([graphic, jpl_wms]);" mais comme je ne m'intéresse qu'à graphic ....
    2. Je pensais pouvoir transposer ce bout de code dans ma fonction :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      function initGeoportalMap() {
          
          geoportalLoadviewer("GeoportalviewerDiv", "normal");
          viewer.addGeoportalLayer('GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC', {opacity:1.0});...
    3. De la manière suivante:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
       var graphic = new OpenLayers.Layer.Image(
                      'vivlig',
          './image/titrev00.png',
                     new OpenLayers.Bounds(4.3231201,45.0657615,4.35,45.07),
                      new OpenLayers.Size(317, 78) );viewer.getMap().addLayer(graphic, ,"vivlig",{visibility: true,opacity:1.0});
    4. Mais la couche vivlig ne s'affiche pas. J'ai bien bidouillé autour de ce schéma, sans grand résultat. Je me doute bien que tu vas sourire de mon ignorance, mais ta réponse me permettra de mieux appréhender mes futures transpositions OL vers Geoportail.

    Merci
    L'exemple OpenLayers montre que l'image est insérée dans la carte en coordonnées géographique (EPSG:4326 par défaut dans OpenLayers).
    Comme d'habitude avec les systèmes de coordonnées, il faut être attentif ...

    Dans ta transposition, tu n'as pas indiqué à l'API son système de coordonnées (comme dans OpenLayers), mais l'API ne travaille pas par défaut en en EPSG:4326, mais en projection Géoportail (équidistant cylindrique) qui est "superposable" avec la plate-carré (EPSG:4326). De fait, l'API intéprête l'emprise en coordonnées GEOPORTALFXX ...
    Il faudrait donc indiquer à la création que ton image est en EPSG:4326 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    graphic = new OpenLayers.Layer.Image(
        'vivlig',
        './image/titrev00.png',
        new OpenLayers.Bounds(4.3231201,45.0657615,4.35,45.07),
        new OpenLayers.Size(317, 78),
        //options
         {
          projection:new OpenLayers.Projection('EPSG:4326'),
          visibility: true,
          opacity:1.0
        });
    Le layer ainsi créé et juste ajouté à la carte ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    viewer.getMap().addLayer(graphic);

  5. #5
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    Il faut utiliser la balise <icon> certes, mais aussi les attributs w, h. Par défaut, avec scale à 1 (valeur par défaut), la taille de l'image est 32 x 32.
    Je te crois volontiers, mais (il me semble) que j'avais bien indiqué la taille w:317 h:78... Avec un résultat à 32*32... Je vais reprendre la chose car si tu le dis, je me suis surement planté quelque part. Cependant, il me semble aussi avoir lu dans la doc kml, que les w et h étaient obsolètes et déconseillés... Faut que je recherche la page.

    Pour la deuxième partie de ta réponse, il faut que je regarde de plus près cette question de coordonnées sur laquelle je suis passé allègrement. Focalisé par mes lignes de code...

  6. #6
    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
    Citation Envoyé par cmail Voir le message
    Je te crois volontiers, mais (il me semble) que j'avais bien indiqué la taille w:317 h:78... Avec un résultat à 32*32... Je vais reprendre la chose car si tu le dis, je me suis surement planté quelque part. Cependant, il me semble aussi avoir lu dans la doc kml, que les w et h étaient obsolètes et déconseillés... Faut que je recherche la page.
    Dans les spécifications KML de Google peut être, mais pas dans le code OpenLayers

    Dès que j'ai un peu de temps, j'essaierai avec des valeurs w/h quelconque pour voir le résultat.

  7. #7
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    1. Pour l'icone, j'ai repris méthodiquement la chose et maintenant j'affiche l'image comme je veux. Dans mes essais précédents, j'ai du merdé quelque part. En effet, sur KML-google http://code.google.com/intl/fr/apis/...ence.html#icon on peut lire l'extrait suivant :

    Elements Specific to Icon

    <href>An HTTP address or a local file specification used to load an icon. <x>, <y>, <w>, <h> Use of these elements within <Icon> has been deprecated.
    1. Quant à OpenLayers.Layer.Image, des choses m'échappent encore... Même si cette question devient négligeable puisque je réalise mon besoin avec <icon>. Mais tout de même... Mon code est le suivant:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
       var graphic = new OpenLayers.Layer.Image(
                      'vivlig',
          './image/titrev00.png',
                     new OpenLayers.Bounds(4.3231201,45.0657615,4.35,45.00),
                      new OpenLayers.Size(317, 78),
                     {
            projection:new OpenLayers.Projection('EPSG:4326'),
            visibility: true,
            opacity:1.0
          }            );
         
          viewer.getMap().addLayer(graphic);
      OpenLayers.Bounds() est probablement mal renseigné? En tout cas rien ne s'affiche...

  8. #8
    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 Snif
    Moi non plus, je n'arrive pas à afficher une couche image.
    La couche kml par contre s'affiche avec une grande icône (256x256).
    Bon son affichage n'est pas top dans le menu "Couches", il n'est plus coché après quelques instants (normal, un seul placemark).
    L'icône est une tuile en provenance de bing.
    La page avec ces essais est à l'adresse http://atlasnw.free.fr/geoportail/ex...ta5/image.html

  9. #9
    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
    Aucune des URL suivantes ne fonctionnent :




    L'emprise de la couche reste en géographique ... bizarre
    Le nom n'apparaît pas dans le gestionnaire de couches ... bizarre

  10. #10
    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
    J'ai jeté un oeil au code source d'OpenLayers.Layer.Image :

    • par défaut, c'est une baseLayer : il faudrait donc ajouter isBaseLayer:false dans les options de création;
    • cela utilise OpenLayers.Tile.Image que nous avons patché dans Geoportal.Tile.Image pour avoir des images de taille variable (un patch OpenLayers vise à faire quelque chose de similaire pour des grilles);

    Il faudra approfondir le sujet avant que l'affichage fonctionne

  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 Cela progresse
    Je viens d'effectuer les modifications et le nom de la couche est maintenant présent dans le gestionnaire.
    Par contre, je n'arrive pas à l'activer.

    Je ne pense pas avoir besoin de cette fonctionnalité, c'était juste pour le Schmilblic!

  12. #12
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    Citation Envoyé par mga_geo Voir le message
    Je viens d'effectuer les modifications et le nom de la couche est maintenant présent dans le gestionnaire.
    Ici, à cette heure, je ne vois pas cet affichage dans le gestionnaire...

    Je suis bien dans l'incapacité de vous aider...

  13. #13
    Membre habitué
    Homme Profil pro
    Ingénieur Cartographe
    Inscrit en
    Juin 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Cartographe
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 84
    Points : 161
    Points
    161
    Par défaut Layer.Image
    J'ai également eu quelques problème pour paramétrer un layer image, mais après avoir défini un maxResolution (par tâtonnement) dans les options, cela marche beaucoup mieux !
    Il faut donc mettre dans les options :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    isBaseLayer : false,
    maxResolution : 100
    @+
    jmv

  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 Merci mais ...
    Après modif du code, j'ai toujours le même comportement
    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
      var imgLayer = new OpenLayers.Layer.Image(
        'image',
        'MsnSat17.png',
        new OpenLayers.Bounds(-1.480408, 48.140432,-1.477661,48.142265),
        new OpenLayers.Size(256,256),
        {
          projection: new OpenLayers.Projection('EPSG:4326'),
          isBaseLayer: false,
          maxResolution : 100,
          visibility: true,
          minZoomLevel:12,
          maxZoomLevel:18,
          opacity:1.0
        }
      );
      viewer.getMap().addLayer(imgLayer);

  15. #15
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    Encore une bêtise de ma part, (le ridicule ne tue pas!)mais si tu essayais:
    new OpenLayers.Bounds(-1.480408, 48.140432,-1.477661,48.1400),
    Il me semble que "bottom">"top"...

Discussions similaires

  1. Charger une image dans une variable avec IE7
    Par Loki13 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/02/2007, 15h19
  2. [TImageList] Charger une image dans un TImage
    Par xenos dans le forum Delphi
    Réponses: 5
    Dernier message: 17/05/2006, 18h30
  3. Charger une image dans un Timage
    Par michel71 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/04/2006, 08h55
  4. [Image] charger une image dans le main
    Par GLDavid dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 31/03/2006, 17h11
  5. Charger une image dans un thread
    Par KRis dans le forum Langage
    Réponses: 3
    Dernier message: 25/08/2005, 17h36

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