mviewer / mviewer

Visualiseur géographique thématique basé sur OpenLayers 8 et Bootstrap 3.3.6 / cartographic application based on OpenLayers and Bootstrap
https://mviewer.github.io/fr/
GNU General Public License v3.0
86 stars 99 forks source link

Gérer une structure de données front avec mviewer #807

Open laurentateegle opened 10 months ago

laurentateegle commented 10 months ago

Bonjour, Plus j'avance et plus je trouve votre travail remarquable, bravo encore.

Du coup, j'arrive sur des sujets un peu plus "complexes". Je crée par exemple un polygone de masquage que je souhaite conserver et retrouver dans d'autres composants après sa création. J'ai donc besoin de le conserver dans une structure de données que je peux retrouver facilement (par exemple accrochée au mviewer ou autre Avez-vous prévu des mécanismes de ce type ou est-ce que je dois l'imaginer de mon côté ? Merci par avance

Gaetanbrl commented 10 months ago

Par défaut, il n'a pas été prévu de mécanisme pour ajouter des données temporaire, étant donné que les utilisateurs renseignent les données dans le config.xml, dans un customlayer ou via une extension.

Si la données n'a as besoin d'être stockée de façon durable (ce que mviewer ne permet pas car c'est le rôle du serveur carto + la BDD), alors vous pouvez utiliser les variables globales JavaScript.

Par défaut, les informations utiles au mviewer sont dans la variable mviewer (retourne les méthodes ou objets de l'application). Vous pouvez ainsi accéder aux données et infos sur l'état du mviewer.

La variable configuration est aussi disponible.

Vous pouvez donc facilement rajouter au démarrage de l'application un objet ou une méthode dans une variable disponible ou que vous pouvez créer. Cette variable sera alors accessible de partout dans le code (si tout est bien chargé - attention aux effets asynchrones / race conditions).

Exemple :

Gaetanbrl commented 10 months ago

A noter que pour un masque, vous pouvez jouer avec les SLD (voir démo mviewer associée), ou via une extension. Vous pouvez réutiliser par exemple la librairie ol.ext pour réaliser ce type de masque :

https://viglino.github.io/ol-ext/examples/filter/map.filter.crop.html

laurentateegle commented 10 months ago

Merci beaucoup c'est ce que j'ai utilisé. J'ai juste besoin de garder le feature de Mask tout au long de la session. Si j'en fais un layer "standard", il peut être supprimé via la croix, ce qui m'oblige à le ressaisir. Je cherche à savoir si il existe un type de layer "permanent"

Merci d'avance

Le mar. 24 oct. 2023 à 11:01, gaetanbrl @.***> a écrit :

A noter que pour un masque, vous pouvez jouer avec les SLD (voir démo mviewer associée), ou via une extension. Vous pouvez réutiliser par exemple la librairie ol.ext pour réaliser ce type de masque :

https://viglino.github.io/ol-ext/examples/filter/map.filter.crop.html

— Reply to this email directly, view it on GitHub https://github.com/mviewer/mviewer/issues/807#issuecomment-1776807150, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGBV6NYZKEJALCQ26LSIGW3YA57W3AVCNFSM6AAAAAA6NKIPC2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZWHAYDOMJVGA . You are receiving this because you authored the thread.Message ID: @.***>

Gaetanbrl commented 10 months ago

tout au long de la session

Via du JS, vous pouvez rajouter vous-même une couche en regardant comment est utilisée la méthode addLayer dans le code mviewer :

https://github.com/mviewer/mviewer/blob/master/js/mviewer.js#L1953

Attention : si vous rajoutez une couche après l'init du mviewer il faut penser à conserver l'ordre d'affichage sur la carte selon la légende (je ne sais plus comment c'est géré)