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 l'emprise de la couche


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Zoomer sur l'emprise de la couche
    Bonjour à tous,

    Je me suis lancé dans l'utilisation de l'API Geoportail depuis... hier, et après moult soucis résolus, il y en a un sur lequel je bute vraiment et que je n'arrive pas à résoudre malgré de longues recherches.

    En fait, j'aimerais qu'au chargement de ma carte, la vue soit centrée et zoomée sur une couche en particulier, soit l'équivalent de la fonction "zoomer sur l'emprise de la couche" montrée sur l'image.



    En effet, dans tous les exemples que j'ai consultés les coordonnées du centre de la map et le niveau de zoom sont donnés en dur dans la fonction setCenterAtLonLat. J'imagine qu'il doit exister un moyen de reproduire l'équivalent de la fonction "zoomer sur l'emprise", et c'est donc ce que je souhaiterais faire.

    Auriez-vous une idée s'il vous plaît ?

    Merci d'avance

  2. #2
    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
    Euh!
    Dans setCenterAtLonLat(4.24003,45.02590, 12); tu peux jouer sur le niveau de zoom (en rouge ici) de 0 à 20 (si je me rappelle bien).
    Cela devrait te satisfaire.
    Ou alors je n'ai pas compris ton problème.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci de la réponse.
    Mais mon problème est que ces coordonnées que tu donnes dans les paramètres de la fonction, j'aimerais ne pas avoir à les mettre en dur dans le code HTML.
    J'aimerais que le setCenter se fasse sur ce que j'ai appelé le "zoomer sur l'emprise de la couche".
    Concrètement j'aimerais que quand ma carte se charge, ce qui soit affiché soit la même chose que ce qu'on obtient en cliquant sur la loupe de ma couche KML.
    J'aimerais que la vue soit la meilleure vue englobant tous les placemark de ma couche KML.

    J'espère avoir été plus clair

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    bonjour,
    je pense à cette fonction (voir début des post...)

    var kml1 = VISU.getMap().addLayer("KML",...........etc...};

    // centrage
    kml1.events.register('loadend',kml1, function(e){zoomToLyr();});
    function zoomToLyr() {
    bounds = kml1.features[0].geometry.getBounds();
    VISU.getMap().zoomToExtent(bounds);
    };

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Effectivement, ça doit pas être loin de la solution.

    Sur mon KML, il y a 4 marqueurs, dont 3 assez regroupés. Et malheuresement avec ce bout de code il centre sur les trois marqueurs, et on ne voit plus le 4ème.
    Mais je vais chercher du côté de la fonction zoomToExtent avec zoomToMaxExtent (ou quelque chose comme ça, je vais voir dans l'API) pour voir ce que je peux en tirer, ça doit juste être une question de petit réglage.

    Merci bien en tout cas.

    Petite question, j'ai du mal à comprendre ce que fait le troisième paramètre ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    kml1.events.register('loadend',kml1, function(e){zoomToLyr();});
    Le function(e){zoomToLyr()} précisément, simplement pour comprendre un peu.

    Edit : ah non à priori ce serai le feature[0] qui fait qu'il centre mon premier marqueur, plutôt que les 4. Il faut que je trouve un moyen de centrer les 4 en même temps.

    re-Edit : Bon je pense être arrivé à un résultat satisfaisant (difficile d'être sûr puisque j'ai un seul kml sur lequel tester). Dans ton code, j'ai remplacé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bounds = kml.features[0].geometry.getBounds();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bounds = kml.maxExtent;
    Petit bug ensuite, en enlevant mon setCenterAtLonLat, mon kml était désactivé par défaut. J'ai donc simplement ajouté un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    kml.setVisibility(true);
    Vu que maintenant ça semble fonctionner sans setCenter, j'en déduis que ça doit fonctionner pour n'importe KML... à voir

    En tout cas merci de m'avoir mis sur la voie.

  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 DBane Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bounds = kml.maxExtent;
    Je ferai plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bounds= kml.getDataExtent();

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    En apparence, cela me donne le même résultat.

    Mais si vous me dites que cette opération fonctionne mieux (que ça fonctionne à tous les coups), alors c'est celle que je vais adopter.

    Je vais tester les deux pendant quelques jours et si j'ai un problème avec l'une des deux, j'en ferai part ici.

    Merci dgrichard

  8. #8
    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 DBane Voir le message
    En apparence, cela me donne le même résultat
    maxExtent est une option de construction des OpenLayers.Layers qui peut être fixée à une valeur différente de l'emprise réelle des donnes ...
    getDataExtent() calcule cette emprise à partir des données réellement chargées !

    Içi même résultat et c'est normal

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

Discussions similaires

  1. Zoomer sur les données d'une couche
    Par Unusual dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 02/09/2009, 17h23
  2. zoomer sur une image
    Par lekooto dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/02/2007, 19h15
  3. Réponses: 6
    Dernier message: 26/01/2007, 15h00
  4. Zoomer sur une image
    Par Lynecoln dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2006, 22h56
  5. Zoomer sur un JPanel
    Par hina dans le forum 2D
    Réponses: 3
    Dernier message: 28/04/2005, 10h46

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