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 :

Plusieurs couches sur la mini-map ?


Sujet :

IGN API Géoportail

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 29
    Points : 6
    Points
    6
    Par défaut Plusieurs couches sur la mini-map ?
    Bonjour,

    Utilisant actuellement une mini map à côté de ma carte principale, je voulais savoir s'il est possible d'y ajouter plusieurs couches ?
    Je voudrais superposer la couche ADMINISTRATIVEUNITS.BOUNDARIES avec GEOGRAPHICALGRIDSYSTEMS.MAPS.OVERVIEW.

    Pour l'instant j'ai essayé avec ce code là :
    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
    var miniMap= getGeoportalLayer('FXX','ADMINISTRATIVEUNITS.BOUNDARIES','GEOGRAPHICALGRIDSYSTEMS.MAPS.OVERVIEW');
                            iv.addComponent(
                                "Geoportal.Component.Navigation.OverviewMap",
                                {
                                    div:OpenLayers.Util.getElement('bigOvDiv'),
                                    size: new OpenLayers.Size(200, 150),
                                    minRatio: 8,   //default: 8
                                    maxRatio: 32,   //default: 32
                                    layers:[miniMap],
                                    mapOptions: {
                                        resolutions:miniMap.options.nativeResolutions,
    									minZoomLevel:2,
                                        maxZoomLevel:12
                                    }
                                }
                            );
    Merci

  2. #2
    Membre confirmé Avatar de lboulanger
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 262
    Points : 529
    Points
    529
    Par défaut
    Tout d'abord, si vous souhaitez récupérer plusieurs couches différentes, vous devez appelez plusieurs fois la fonction getGeoportalLayer() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var boundsLayer = getGeoportalLayer('FXX','ADMINISTRATIVEUNITS.BOUNDARIES');
    var overviewLayer = getGeoportalLayer('FXX','GEOGRAPHICALGRIDSYSTEMS.MAPS.OVERVIEW');
    et non pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var miniMap= getGeoportalLayer('FXX','ADMINISTRATIVEUNITS.BOUNDARIES','GEOGRAPHICALGRIDSYSTEMS.MAPS.OVERVIEW');
    qui ne vous renverra que la couche "ADMINISTRATIVEUNITS.BOUNDARIES" (car la fonction n'attend qu'un seul identifiant de couche).

    Ensuite, vous devriez en effet pouvoir spécifier plusieurs couches à afficher dans la map de la vue d'ensemble (overview), dans le paramètres "layers", qui est un tableau attendant plusieurs couches à afficher.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    layers: [boundsLayer, overviewLayer]
    Le contrôle Géoportail que vous ajoutez se base en grande partie sur le contrôle OpenLayers OpenLayers.Control.OverviewMap, dont vous pouvez trouver la documentation ici : http://dev.openlayers.org/docs/files...iewMap-js.html, peut être que cela pourra vous aider.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Merci. Cependant, après avoir regardé votre exemple et la doc OpenLayers, l'affichage de 2 couches ne fonctionnent toujours pas.
    J'ai mis le code suivant :
    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 boundsLayer = getGeoportalLayer('FXX','ADMINISTRATIVEUNITS.BOUNDARIES');
    var overviewLayer = getGeoportalLayer('FXX','GEOGRAPHICALGRIDSYSTEMS.MAPS.OVERVIEW');
                            iv.addComponent(
                                "Geoportal.Component.Navigation.OverviewMap",
                                {
                                    div:OpenLayers.Util.getElement('bigOvDiv'),
                                    size: new OpenLayers.Size(200, 150),
                                    minRatio: 8,   //default: 8
                                    maxRatio: 32,   //default: 32
                                    layers:[boundsLayer,overviewLayer],
                                    mapOptions: {
                                        resolutions:boundsLayer.options.nativeResolutions,
    									minZoomLevel:2,
                                        maxZoomLevel:12
                                    }
                                }
                            );

  4. #4
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour,

    merci de préciser ce qui ne fonctionne pas et de nous donner des éléments permettant d'analyser le problème :

    idéalement une page visible en ligne, ou :

    * messages d'erreur dans la console du navigateur (firebug ou autre)
    * copies d'écran,
    * information de debug (valeurs des variables intermédiaires, ...)
    * ...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 29
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai effectivement répondu un peu rapidement dans mon message précédent.

    J'ai créé une fonction getGeoportalLayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function getGeoportalLayer ( territory, name ) {
                    var lyrPrms= map.catalogue.getLayerParameters(territory, name);
                    lyrPrms.options.territory= territory;
                    lyrPrms.options.isBaseLayer= true;
                    lyrPrms.options.opacity= 1.0;
                    var lyr= new lyrPrms.classLayer(
                        lyrPrms.options.name,
                        lyrPrms.url,
                        lyrPrms.params,
                        lyrPrms.options);
    				return lyr;
                }
    J'implémente cette fonction:
    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 boundsLayer = getGeoportalLayer('FXX','ADMINISTRATIVEUNITS.BOUNDARIES');
    						var overviewLayer = getGeoportalLayer('FXX','GEOGRAPHICALGRIDSYSTEMS.MAPS.OVERVIEW');
                            iv.addComponent(
                                "Geoportal.Component.Navigation.OverviewMap",
                                {
                                    div:OpenLayers.Util.getElement('bigOvDiv'),
                                    size: new OpenLayers.Size(200, 150),
                                    minRatio: 8,   //default: 8
                                    maxRatio: 16,   //default: 32
                                    layers:[boundsLayer,overviewLayer],
                                    mapOptions: {
                                        resolutions:boundsLayer.options.nativeResolutions,
    									minZoomLevel:2,
                                        maxZoomLevel:12
                                    }
                                }
                            );
    Puis j'ajoute la mini-map à la page web avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="bigOvDiv"></div>
    Voici donc une copie d'écran du résultat (il n'y a que la couche ADMINISTRATIVEUNITS.BOUNDARIES qui s'affiche) :
    Nom : capture_ecran_minimap.PNG
Affichages : 391
Taille : 1,33 Mo
    Je ne vois aucun message d'erreur dans la console...

  6. #6
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Ok, je vous propose les modifications suivantes dans votre code (en gras) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function getGeoportalLayer ( territory, name, isBaseLayer, opacity ) {
                    var lyrPrms= map.catalogue.getLayerParameters(territory, name);
                    lyrPrms.options.territory= territory;
                    lyrPrms.options.isBaseLayer= isBaseLayer;
                    lyrPrms.options.opacity= opacity;
                    var lyr= new lyrPrms.classLayer(
                        lyrPrms.options.name,
                        lyrPrms.url,
                        lyrPrms.params,
                        lyrPrms.options);
    				return lyr;
                }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var boundsLayer = getGeoportalLayer('FXX','ADMINISTRATIVEUNITS.BOUNDARIES',false,0.5);
    var overviewLayer = getGeoportalLayer('FXX','GEOGRAPHICALGRIDSYSTEMS.MAPS.OVERVIEW',true,1);
    ...
    on permet ainsi de jouer sur l'opacité de chacune des couches et sur le statut de "baseLayer" (en gros la couche de fond). N'hésitez pas à jouer sur ces paramètres pour faire changer l'affichage.

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/11/2011, 12h58
  2. [Google Maps] affichage de plusieurs marqueurs sur une carte de google maps
    Par franklin19 dans le forum APIs Google
    Réponses: 5
    Dernier message: 30/06/2011, 18h32
  3. plusieurs Geopoint sur la meme Map
    Par anastunisie dans le forum Android
    Réponses: 0
    Dernier message: 13/05/2011, 18h48
  4. Plusieurs marqueurs sur le même map ?
    Par Mizo120 dans le forum Android
    Réponses: 1
    Dernier message: 11/05/2011, 10h30
  5. Plusieurs couches Graphics sur JPanel, etc..
    Par aristeas dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 17/02/2007, 09h59

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