Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(drawing): Titre par défaut à la couche du croquis #296

Merged
merged 5 commits into from
Dec 12, 2024

Conversation

elias75015
Copy link
Contributor

@elias75015 elias75015 commented Dec 11, 2024

Problème :

  • le GFI sur le Drawing renvoie comme nom de couche "undefined"

On ajoute donc le nom "Mon Croquis" par défaut à la VectorLayer, que l'on transmet au GFI.

cf. IGNF/cartes.gouv.fr-entree-carto#415

On en profite pour corriger le zoomToExtent du layerSwitcher sur les croquis

@elias75015 elias75015 added the bug label Dec 11, 2024
@elias75015 elias75015 self-assigned this Dec 11, 2024
Copy link
Collaborator

@lowzonenose lowzonenose left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On ne serailise pas les méta informations de la couche dans le layer natif (source)..., je pense qu'avant, le job était réalisé par le SDK, mais, maintenant, c'est aux extensions de faire le job.
Pour avoir une persistance des informations de la couche, on les ajoute directement dans le layer natif.
Chaque contrôle doit gérer les méta informations à ajouter :

  • drawing
  • isochrone
  • route
  • (measures)
  • imports : il existe déjà une sérialisation des informations !

Les informations à serialiser sont renseignées par le gestionnaire de couche :

/**
     * Add a new layer to control (when added to map) or add new layer configuration
     *
     * @param {ol.layer.Layer} layer - layer to add to layer switcher
     * @param {Object} [config] - additional options for layer configuration
     * @param {Object} [config.title] - layer title (default is layer identifier)
     * @param {Object} [config.description] - layer description (default is null)
     * @param {Object} [config.legends] - layer legends (default is an empty array)
     * @param {Object} [config.metadata] - layer metadata (default is an empty array)
     * @param {Object} [config.quicklookUrl] - layer quicklookUrl (default is null)
     * @fires layerswitcher:add
     * @example
     *   layerSwitcher.addLayer(
     *       gpParcels,
     *       {
     *           title : "Parcelles cadastrales",
     *           description : "description de la couche",
     *           quicklookUrl : "http://quicklookUrl.fr"
     *       }
     *   )
     */

Mais, malheureusement, le gestionnaire de couche ne fait que la moitié du job, il devrait ajouter ces informations dans le layer (soit attributs de l'objet layer, soit properties de layer ou source) :
image

Même si chaque contrôle implémente la sérialisation, le gestionnaire de couche reste le mécanisme principal de la sérialisation des méta information (avec mise en conformité) car il a connaissance de tout ce qui est ajouté sur la carte.

Les couches du catalogue possèdent déjà ces informations :

       // add originators to layer source (to be updated by Originators control)
        this._originators = wmtsParams.originators;

        // add legends and metadata (to be added to LayerSwitcher control)
        this._legends = options.legends || wmtsParams.legends;
        this._metadata = options.metadata || wmtsParams.metadata;
        this._description = options.description || wmtsParams.description;
        this._title = options.title || wmtsParams.title;
        this._quicklookUrl = options.quicklookUrl || wmtsParams.quicklookUrl;

        this.name = options.layer;
        this.service = "WMTS";

Titre des couches compute dans gfi
ZoomToExtent corrigé dans layerswitcher pour couches compute
@elias75015
Copy link
Contributor Author

D'un point de vue fonctionnel :

  • GetFeatureInfo :
    Les couches drawing et iso/iti ont bien le titre "Mon Croquis", "Mon Isodistance", "Mon Isochrone" ou "Mon Itinéraire" dans le panel GFI

-LayerSwitcher :
Les couches drawing et iso/iti ont bien le titre "Mon Croquis", "Mon Isodistance", "Mon Isochrone" ou "Mon Itinéraire" dans le panel LayerSwitcher
Le zoomToExtent est fonctionnel

@lowzonenose
Copy link
Collaborator

D'un point de vue fonctionnel :

  • GetFeatureInfo :
    Les couches drawing et iso/iti ont bien le titre "Mon Croquis", "Mon Isodistance", "Mon Isochrone" ou "Mon Itinéraire" dans le panel GFI

-LayerSwitcher : Les couches drawing et iso/iti ont bien le titre "Mon Croquis", "Mon Isodistance", "Mon Isochrone" ou "Mon Itinéraire" dans le panel LayerSwitcher Le zoomToExtent est fonctionnel

Donc, si je modifie le nom d'un drawing (My drawing), on a aussi la modification sur le GFI ?

@elias75015
Copy link
Contributor Author

elias75015 commented Dec 12, 2024

Le GFI va prendre ça :

layerTitle = src._title || src.name || layerProperties.title || layerProperties.name || src.url_ || "Couche de données";

Pour les croquis / compute, c'est layerProperties.title que le widget instancie à "Mon Croquis", "Mon itinéraire". Propriété gfiLayer.layer.getProperties().title accessible en écriture, donc modifiable.

Copy link
Collaborator

@lowzonenose lowzonenose left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok.
Mais, j'ai un peu de mal à me rendre compte du choix d'enregistrer les méta informations (titre, description, ...) directement dans les properties du layer natif d'OpenLayers de l'outil de dessin quand il sera sur le Portail avec ou sans connexion à l'espace personnel.

Car, quand nous allons enregistrer un croquis dans l'espace personnel, comment récupère t on les méta informations du layer sur la carte (à minima le titre) ? Si le titre du croquis est modifié par l'outil de dessin, comment récupère t on cette information ?

J'ai l'impression que les méta informations doivent être stockées dans le ol.layer ou ol.source (properties)...

@elias75015
Copy link
Contributor Author

Je ne vois pas trop le problème ?

Le titre est enregistré dans les propriétés du layer, donc accessible et editable (tant qu'on sait quelle couche récupérer) :

var olVectorLayer = map.getLayers().getArray().find(layer => layer.get('title') == 'Mon Croquis');

Et si on veut mettre à jour le titre :

olVectorLayer.setProperties({title:"Mon Nouveau Titre"})

Capture d’écran du 2024-12-12 17-42-24
Capture d’écran du 2024-12-12 17-42-40

@elias75015 elias75015 merged commit 2a21a44 into main Dec 12, 2024
@elias75015 elias75015 deleted the fix/recette-drawing branch December 12, 2024 16:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants