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 :

Zoomer sur les données d'une couche


Sujet :

IGN API Géoportail

  1. #1
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Points : 194
    Points
    194
    Par défaut Zoomer sur les données d'une couche
    Bonjour,
    J'utilise des KML sur des communes diverses avec des couches plus ou moins étendues (en surface). Je récolte bien les coordonnées Min et Max de façon à avoir une emprise englobant toutes les infos de ma couche, et mon but est d'afficher cette couche, puis de centrer sur le milieu et de zoomer afin d'être juste autour des infos de la couche en question.

    J'utilise le code suivant pour l'instant, mais j'utilise un niveau de zoom arbitraire (dernier paramètre) qui n'est pas toujours adéquat...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function CentrerSurCoordonnees(aLongitudeMin, aLatitudeMin, aLongitudeMax, aLatitudeMax, aNiveauZoom) 
    {
        if (map)
        {
            var LonCourant = (parseFloat(aLongitudeMin)+parseFloat(aLongitudeMax))/2;
            var LatCourant = (parseFloat(aLatitudeMin)+parseFloat(aLatitudeMax))/2;
            var NiveauZoom = parseInt(aNiveauZoom)
            map.getMap().setCenterAtLonLat(LonCourant, LatCourant, NiveauZoom);
        }
    }
    Y a-t-il moyen de zoomer sur la couche KML en question tout en gardant le centrage sur les coordonnées ?
    Comment calculer le niveau de zoom comme il faut (si on garde cet appel tel quel) ?
    Y a-t-il une autre méthode ?

  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 zoomToExtent
    Perso, je récupère l'emprise à zoomer (OpenLayers.Bounds):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bounds= new OpenLayers.Bounds(aLongitudeMin,aLatitudeMin,aLongitudeMax,aLatitudeMax);
    et fais un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    map.getMap().zoomToExtent(bounds,closest);
    Bien sûr :

    bounds est dans le système de projection de la carte, si c'est pas le cas, utilise transform() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bounds.transform(systeme_source,map.getMap().getProjection());
    closest à true pour trouver le zoom au plus proche. Mais celui-ci peut ne pas afficher toute l'emprise. false par défaut donc dans OpenLayers!

  3. #3
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    379
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 379
    Points : 194
    Points
    194
    Par défaut
    Merci (encore une fois)...Cela marche !

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

Discussions similaires

  1. Recherche sur les données d'une ListView
    Par malayika dans le forum Windows Forms
    Réponses: 0
    Dernier message: 02/04/2009, 15h57
  2. [MySQL] Statistiques sur les données d'une table
    Par jeanmi68 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/07/2008, 10h59
  3. Réponses: 2
    Dernier message: 18/06/2008, 17h29
  4. Réponses: 1
    Dernier message: 22/04/2008, 21h25
  5. Réponses: 2
    Dernier message: 23/10/2007, 08h11

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