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 :

Zoom avec l'outil -se rapprocher- : comment reduire la marge de sécurité de l'outil ?


Sujet :

IGN API Géoportail

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 872
    Points : 371
    Points
    371
    Par défaut Zoom avec l'outil -se rapprocher- : comment reduire la marge de sécurité de l'outil ?
    Bonjour à tous,
    Quand une carte est affichée, http://wnat.fr/geo.html par exemple, on peut utiliser l'outil - se rapprocher - pour zoomer sur une portion de carte sélectionnée à la souris.
    Lors de l'opération, la zone sélectionnée est matérialisée par un cadre gris semi-transparent et dès que l'on lâche le bouton de la souris, l'affichage est actualisé sur la partie zoomée.
    Quand je dis la partie zoomée, il faut entendre un zoom est fait sur la partie sélectionnée agrandit d'une marge "d'erreur".
    Question : comment réduire la taille de " la marge d'erreur " afin que le rendu de la zone sélectionnée, qui peut être plus large que haute, ou le contraire, épouse en taille l'un des bords du viewer qui peut être plus large que haut, ou le contraire ?
    Cordialement
    Pascal

  2. #2
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Bonjour,

    Cette "marge d'erreur" s'explique de façon totalement logique. L'API Géoportail, tout comme l'API OpenLayers sur laquelle elle se base d'ailleurs, repose sur un système de zoom contraint. En gros, 22 niveaux de zoom sont définis (numérotés de 0 à 21, voir ici :http://api.ign.fr/tech-docs-js/fr/we...s_du_Goportail), et seuls ces niveaux de zoom sont affichables sur l'API, aucune navigation intermédiaire entre ces niveaux n'étant possible. Ce sont ces différents niveaux de zoom que l'on parcourt lorsque l'on fait un zoom à la molette ou au double-clic. L'intérêt de ce système est multiple, on peut évoquer d'une part la simplification dans la prise en main et le développement, et d'autre part l'intérêt de n'afficher que des niveaux de zoom pour lesquels la résolution des données est étudiée et parfaitement adaptée.

    Lorsque l'on zoome via la zoomBox (ce qui est décrit dans votre exemple), l'API prend en compte l'emprise définie et calcule le niveau de zoom à requêter pour s'approcher le plus de l'emprise de zoom : techniquement il s'agit de descendre le plus possible dans les niveaux de zoom contraints tout en gardant la contrainte que toute l'emprise définie reste visible après le zoom. Sauf à tomber exactement sur un niveau de zoom coïncidant parfaitement avec les bords de l'emprise (peu probable sauf coup de chance), le niveau de zoom requêté va donc laisser apparaître après zoom une fenêtre cartographique un peu plus large que l'emprise définie par la zoomBox, ce qui provoque ce que vous appelez une "marge d'erreur" tout à fait logique. C'est aussi pour cela que si l'on fait une zoomBox qui est juste un peu plus petite que la visu carto courante, le zoom n'avance pas car le niveau de zoom contraint suivant conduirait à perdre des données dans l'emprise définie.

    On rentre donc là dans les choix fonctionnels de conception de l'API, et il n'y a pas grand chose que l'on puisse faire. Pour arriver au résultat décrit, il faudrait sortir de ce système de zoom contraint en permettant à l'API d'effectuer des zooms libres entre les différents niveaux de zoom contraint, ce qui autoriserait à faire coïncider exactement la visu carto avec l'emprise de zoom. Outre le fait que cela détournerait un peu l'API de sa philosophie, nous en voyons pas en pratique comment réaliser cela de façon simple. Il faudrait sûrement pour cela attaquer directement les primitives de l'API OpenLayers, ce qui n'est pas chose facile.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 872
    Points : 371
    Points
    371
    Par défaut
    Jérémy
    J'entends tes arguments !
    Détournons le problème ; comment déterminer la taille du viewer en fonction de l'emprise souhaitée ?
    Pascal

  4. #4
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    En fouinant un peu dans le forum, on peut retrouver une question relativement similaire pour autoriser les niveaux de zoom intermédiaires. Je n'ai pas testé, mais ça avait l'air de fonctionner, et en plus ce n'est pas si compliqué que ça.

    A tester

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 872
    Points : 371
    Points
    371
    Par défaut
    Jérémy
    Tu aurais la réf de la question ?

  6. #6
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Evidemment Un peu de fatigue de ma part, désolé

    http://www.developpez.net/forums/d13...lution-tuiles/

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 872
    Points : 371
    Points
    371
    Par défaut
    Salut à tous
    La solution est très simple à mettre en œuvre car, comme supposé, utilisée dans l'exemple cité :
    Il suffit d'ajouter viewer.getMap().fractionalZoom = true; au bon endroit dans le code d'appel du géoportail.
    Dans la page http://wnat.fr/geo.html que je donne en exemple j'ai ajouté cette instruction dans la gestion du onview.
    Merci à tous
    Pascal

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2009, 12h26
  2. Comment faire un zoom avec Swing?
    Par publicStaticVoidMain dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 29/03/2009, 22h44
  3. Réponses: 3
    Dernier message: 19/05/2006, 11h05
  4. Réponses: 16
    Dernier message: 22/03/2005, 21h57
  5. Zoom avec du TJPEG
    Par Thylia dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/06/2002, 16h03

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