PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
104 stars 102 forks source link

Problème utilisation conjointe des composants LeafletDraw et FileLayer #2084

Open jpm-cbna opened 2 years ago

jpm-cbna commented 2 years ago

Sur la carte qui s'affiche en édition du formulaire d'"Ajout d'une zone de prospection" du module Flore Prioritaire, nous utilisons les deux composants LeafletDraw et FileLayer.

Le fonctionnement attendu est de pouvoir charger un fichier GPX depuis le composant FileLayer puis à l'aide de LeafletDraw de dessiner le contour d'un polygone. Le problème c'est que lorsqu'on clique sur l'outil de dessin de polygone, toutes les géométrie téléchargées via le fichier GPX sont supprimées.

Inversement, lorsque je suis en édition d'une géométrie existante et que je veux charger un fichier GPX ma géométrie existante est supprimée !

Le problème semble venir de la ligne 79 du fichier leaflet-draw.component.ts et de la ligne 68 du fichier filelayer.component.ts. Le composant FileLayer semble pourtant avoir un paramètre input "editMode" présent pour activer ou désactiver la suppression qui est réalisé un peu plus loin dans le code.

Est ce que la présence des suppressions aux lignes indiquées ci-dessous est normale ? Est ce qu'il y a une autre façon d'utiliser ces deux composants sans rencontrer le problème exposé ici ?

camillemonchicourt commented 2 years ago

En effet, même soucis dans Occtax. Le chargement d'un GPX semble actuellement bien fonctionner seulement quand on veut localiser des objets ponctuels, et c'est clairement le cas qui a été testé lors des développements.

A améliorer quand on veut localiser des lignes ou des polygones.

jpm-cbna commented 2 years ago

@camillemonchicourt Ok, je ferai le point avec @TheoLechemia sur le sujet.

Pour l'instant, j'ai supprimé les lignes en question, passé à true le paramètre editMode du composant FileLayer. Cela fonctionne mieux.

Ceci dit, je ne suis pas certain que ces suppression n'aient pas des répercussions dans d'autres cas de figures...

Fichier leaflet-draw.component.ts, lignes 79 à 86 commentées les lignes suivantes:

      // remove eventual filelayer layers
      if (this.mapservice.fileLayerFeatureGroup) {
        // delete only if fileLayerEditionMode = false
        // if true we let the filelayer layer to draw it
        if (!this.mapservice.fileLayerEditionMode) {
          this.mapservice.removeAllLayers(this.map, this.mapservice.fileLayerFeatureGroup);
        }
      }

Fichier filelayer.component.ts, ligne 68, correction remplacement de false par true :

this.mapService.setEditingMarker(true);