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 :

redimensionner une carte dans une autre taille


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut redimensionner une carte dans une autre taille
    comme j'ai un peu chercher avant de trouver la reponse, je la mets ici pour qu'elle serve a d'autres...
    Le probleme: vous avez affiché votre carte (VISU.getMap() disons) dans une div (<div id="carte"></div> par exemple). Maintenant vous redimensionnez cette div et vous voulez evidemment que la carte se redimensionne a la dimension de la div. Voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      var div_carte = document.getElementById("carte");
      VISU.render(div_carte);
      VISU.setSize(div_carte.clientWidth, div_carte.clientHeight);
    bien mettre render et setSize. Le render suffit quand on diminue la taille de la div originale mais le setSize est necessaire quand on l'agrandit.

    [EDIT]: corrigé en virant getMap()

  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
    Citation Envoyé par yafoto Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      var div_carte = document.getElementById("carte");
      VISU.getMap().render(div_carte);
      VISU.getMap().setSize(div_carte.clientWidth, div_carte.clientHeight);
    Je mettrai plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      VISU.setSize(div_carte.clientWidth, div_carte.clientHeight);
    la méthode setSize() n'existant pas sur Geoportal.Map (ni sur OpenLayers.Map) ...

    Citation Envoyé par yafoto Voir le message
    bien mettre render et setSize. Le render suffit quand on diminue la taille de la div originale mais le setSize est necessaire quand on l'agrandit.
    J'ai jamais eu besoin de la méthode render() - voir exemple attaché (il ne s'exécute pas directement il faut modifier les ${}, c'est juste du code exemple) !
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    effectivement ces methodes sont sur le viewer, pas sur la carte, mauvaise re-ecriture de ma part, c'est corrigé.

    Citation Envoyé par dgrichard Voir le message
    J'ai jamais eu besoin de la méthode render()
    tant mieux pour toi mais, moi, si, voila ce que ca donne assez souvent sans render... no comment
    Images attachées Images attachées  

  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 yafoto Voir le message
    tant mieux pour toi mais, moi, si, voila ce que ca donne assez souvent sans render... no comment
    Ben, si comment ... ton code fait quoi car grosso modo car render() appelle la même fonction que setSize() ... ?

    J'aimerai juste comprendre auquel cas setSize() devrait appeler render() pour simplifier

    PS: render() est aussi une méthode d'OpenLayers.Map et Geoportal.Map le getMap() était bon sur render(), pas sur setSize()

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    mon code n'utilise que le viewer sur ses methodes setSize et render tel que maintenant decrit en debut de post. Il est trop difficile a extraire pour le mettre en ligne quelque part, desole.
    Tout ce qu'il fait c'est mettre en pleine page la div qui contient la carte ou, au contraire, la remettre a sa taille normale, donc plus petite. Un bete agrandit/reduit a la windows en somme. Quand je reduit, le setSize est suffisant, quand je met en pleine page, j'obtiens la capture d'ecran si je n'utilise pas aussi le render. voila.

  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 yafoto Voir le message
    mon code n'utilise que le viewer sur ses methodes setSize et render tel que maintenant decrit en debut de post. Il est trop difficile a extraire pour le mettre en ligne quelque part, desole.
    Tout ce qu'il fait c'est mettre en pleine page la div qui contient la carte ou, au contraire, la remettre a sa taille normale, donc plus petite. Un bete agrandit/reduit a la windows en somme. Quand je reduit, le setSize est suffisant, quand je met en pleine page, j'obtiens la capture d'ecran si je n'utilise pas aussi le render. voila.
    Je reformule donc :

    Dans mon exemple, le redimensionnement est effectué via un formulaire, changer une valeur (width, height) du formulaire provoque l'appel à setSize() et tout se passe bien.

    Dans ton code, qu'est-ce qui provoque l'appel ?

    Au passage, j'ai testé avec render() appellé par setSize() et cela fonctionne bien aussi ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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