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 :

Comment gérer la transparence ? Capter les évènements d'un polygone superposé à un autre ?


Sujet :

IGN API Géoportail

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 62
    Points : 51
    Points
    51
    Par défaut Comment gérer la transparence ? Capter les évènements d'un polygone superposé à un autre ?
    Bonjour,

    Ma carte est composée de 2 layers. Layer 1 (au dessus) : les régions, layer 2 (en dessous) : les départements de cette région. Le layer départements doit afficher des infobulles et se peindre différemment au survol de la souris (hover). La surface du layer 1 est transparente, sa bordure est épaisse et noire laissant apparaître la couche de départements. Le layer 1 ne réagit pas au survol de la souris.
    Nom : Image2.jpg
Affichages : 167
Taille : 9,2 Ko
    Cependant, le survol de la souris n'a aucun impact sur les polygones des départements, étant situés sous un polygone représentant la région.
    J'ai alors pensé à intervertir la position des couches. Le cas échéant, les polygones départements réagissent au survol de la souris mais la bordure de la région aussi épaisse qu'elle soit perd sa couleur car elle se trouve sous la surface (opacité =0,7) des départements :
    Nom : Image4.jpg
Affichages : 166
Taille : 8,4 Ko

    J'ai beau avoir recherché, scruté le net, je n'ai pas trouvé d'exemple similaire. Y a-t-il une solution à cette problématique ?

    Merci d'avance pour votre aide,
    Bien cordialement,
    EP

  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
    Bonjour,

    Tout d'abord, pouvez-vous nous préciser quelles librairies vous utilisez ? (API JS Géoportail v2, extensions Géoportail pour OpenLayers, OpenLayers, Leaflet, SDK Géoportail, ...)
    Le fait de pouvoir interroger ou non une couche sous-jacente (ici les départements) dépend de la librairie utilisée.

    L'échange des deux couches est une bonne solution de contournement, mais si les régions ne sont pas assez visibles c'est simplement une question de styles des limites des départements et des régions, il faudrait voir dans quelle mesure vous pouvez modifier les styles des couches que vous interrogez.

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 62
    Points : 51
    Points
    51
    Par défaut Suite
    Bonjour,

    Merci pour votre concours.
    J'utilise API JS Géoportail v2.
    Je déclare pas de style précisément. Je ne sais pas si cela peut vous éclairer mais je crée les polygones de cette façon :

    new OpenLayers.Feature.Vector(polygonFeature.geometry.transform(new OpenLayers.Projection("EPSG:4326"), oMap.getMap().getProjectionObject())
    , {
    layerType: 'PG'
    }
    , {
    fillColor: '#FA8072'
    , fillOpacity:0.7
    , strokeOpacity: 1
    , strokeWidth: 1
    , strokeColor: '#FA8072'
    , strokeDashstyle: 'solid'
    , fontFamily: "Times"
    , fontColor: "Black"
    , fontSize: 14
    , labelOutlineColor: 'white'
    , labelXOffset: 0
    , labelYOffset: 0
    , pointRadius: ''
    , label:"61"
    }));


    Bien cordialement,
    EP

  4. #4
    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
    Bonjour,

    En fait, vous déclarez bien un style en créant votre couche c'est le troisième paramètre de la fonction OpenLayers.Feature.Vector(), qui est un objet avec différentes propriétés :

    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
    18
    19
    20
    21
    new OpenLayers.Feature.Vector(polygonFeature.geometry.transform(new OpenLayers.Projection("EPSG:4326"), oMap.getMap().getProjectionObject())
    , {
    layerType: 'PG'
    }
    , {
    // ici les paramètres de votre style !
    fillColor: '#FA8072' 
    , fillOpacity:0.7
    , strokeOpacity: 1 // transparence des tracés
    , strokeWidth: 1 // épaisseur des tracés
    , strokeColor: '#FA8072' // couleur des tracés
    , strokeDashstyle: 'solid'
    , fontFamily: "Times"
    , fontColor: "Black"
    , fontSize: 14
    , labelOutlineColor: 'white'
    , labelXOffset: 0
    , labelYOffset: 0
    , pointRadius: ''
    , label:"61"
    }));
    Vous pouvez donc jouer sur ces styles, notamment les paramètres strokeOpacity (opacité des tracés) et strokeWidth (épaisseur des tracés) pour mieux visualiser les limites des départements et régions.

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 62
    Points : 51
    Points
    51
    Par défaut Suite
    Bonjour et merci pour votre suivi,

    Mes propos manquent de précision, veuillez m'en excuser.
    J'utilise déjà les propriétés strokeOpacity et strokeWidth. Pour le layer des départements, même si strokeOpacity = 0 et strokeWidth = 0, le trait du layer des régions (placé dessous) apparaît dans la couleur de la surface du département au lieu de sa couleur d'origine qui est noire.
    C'est ce que j'ai tenté d'expliquer dans mon premier message (2e photo) : [..]la bordure de la région aussi épaisse qu'elle soit perd sa couleur car elle se trouve sous la surface (opacité =0,7) des départements

    Bien cordialement,
    EP

  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
    Bonjour,

    J'attire votre attention sur le fait que l'API Géoportail v2 n'est plus maintenue par l'IGN et a été remplacée par de nouvelles APIs javascript exploitant les possibilités offertes par les nouvelles versions d'OpenLayers (cf. https://geoservices.ign.fr/documenta...nsion-ol3.html) ou de Leaflet (cf. https://geoservices.ign.fr/documenta...n-leaflet.html). Pour plus d'informations, vous pouvez consulter cet article sur l'évolution de l'API Géoportail : https://geoservices.ign.fr/blog/2017/03/16/FAQ.html

    Cela est plus particulièrement vrai sur la gestion des styles des objets vecteurs qui en l'état date d'OpenLayers 2 (projet arrêté depuis plus de 3 ans). Je vous invite à envisager de faire évoluer globalement votre application vers ces nouvelles bibliothèques et d'étudier les possibilités offertes par le nouvel OpenLayers (cf. http://openlayers.org/en/latest/apid...yle.Style.html) ou par Leaflet (http://leafletjs.com/reference-1.2.0.html) pour gérer les styles.

  7. #7
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 62
    Points : 51
    Points
    51
    Par défaut Suite
    Bonjour,

    Je vous remercie pour votre longue réponse et les conseils. Nous avons lu la communication d'IGN au sujet de cette nouvelle API et entrepris une refonte de notre produit mais c'est un gros travail. En attendant, nous gérons l'existant pendant la phase transitoire.
    En l'état, votre message ne m'est d'aucune aide ; si vous connaissez l'ébauche d'une solution à notre problème, votre aide sera la bienvenue

    Bien cordialement,
    EP

  8. #8
    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
    Bonjour,

    Si la gestion des styles ne suffit pas, et puisqu'il n'est pas possible avec l'APIv2 d'intercepter le clic sur une couche située au dessous, la solution peut être de modifier directement les données qui sont affichées, si vous le pouvez.
    C'est-à-dire, par exemple, essayer d'afficher les régions et départements dans une même couche, avec des styles différents ?
    Si vous avez la main sur les données que vous affichez, par exemple si vous chargez un fichier KML, c'est envisageable.

    Malheureusement, nous n'avons plus d'exemples ou de tutoriels à vous proposer sur ces anciennes librairies pour vous aider (APIv2 et OpenLayers2).

    Si vous rencontrez des difficultés lors de la migration vers l'APIv3, ce que nous vous conseillons, vous pouvez en faire part sur ce forum, où vous pourrez probablement trouver des réponses.

    Laurane

  9. #9
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 62
    Points : 51
    Points
    51
    Par défaut Suite et fin
    Bonjour,

    Nous ne pouvons pas aisément ne faire qu'une couche ou intervenir sur les styles car c'est une application qui génère le code de la page à partir de données émanant d'un progiciel. Je pense que nous allons intervertir les couches et nous passer des infobulles et nous aviserons après le passage à la version supérieure. Merci Laurane pour votre aide.

    Bien cordialement,
    EP.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/01/2015, 19h34
  2. Rendre un élément transparent par les événements
    Par Mr Meuble dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/05/2011, 17h27
  3. Réponses: 2
    Dernier message: 07/02/2011, 20h16
  4. Réponses: 13
    Dernier message: 25/05/2010, 07h44
  5. Comment gérer des clics sur les touches du clavier:
    Par choko83 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 11/03/2008, 11h15

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