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

Evolution de l'outil de dessins #267

Closed
wants to merge 9 commits into from

Conversation

lowzonenose
Copy link
Contributor

@lowzonenose lowzonenose commented May 19, 2020

Évolutions sur l'outil de dessin suite à 2 remontées du forum :

Possibilité de choisir d'afficher les popup d'informations, ainsi que de surcharger le formulaire :

var drawing = new ol.control.Drawing({
        popup : {
            display : true,
            apply : function (params) {
                  var element = document.createElement('div');
                  element.className = "popup";
                  console.log(params.geomType);
                  var message = "";
                  var props = params.feature.getProperties();
                  for (const property in props) {
                              message += property;
                              message += " : ";
                              message += props[property];
                              message += "<br>";
                  }
                  element.innerHTML = message;
                  return element;
              }
          }
});

Mise en place d'un outil qui permet de trouer des polygones :
image

Une option permet de désactiver cet outil :

var drawing = new ol.control.Drawing({
  tools : {
    holes : false
  }
});

- creation de polygones avec des trous...
- encore bcq de choses à faire...
    - possibilité d'afficher les popup
    - surcharge de la fonctions d'affichage des popup
@lowzonenose lowzonenose self-assigned this May 19, 2020
@elias75015
Copy link
Contributor

L'exemple ol-drawing-bundle-options-popup ne m'affiche aucune pop-up, hors l'option diisplay est à true :

var drawing = new ol.control.Drawing({
                       collapsed : true,
                       popup : {
                           display : true,
                           apply : function ({geomType : geomType, feature : feature}) {
                               console.log(geomType);
                               var props = feature.getProperties();
                               console.log(props);
                           }
                       },
                   });

@elias75015
Copy link
Contributor

Petit problème quand on superpose plusieurs polygones de "découpe" au sein d'un même polygone à "trouer"

Copy link
Contributor

@elias75015 elias75015 left a comment

Choose a reason for hiding this comment

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

Dans la jsdoc, spécifier qu'un élément de DOM doit être retourné par la fonction donnée en paramètre de l'option pop-up du widget de dessin ?

@lowzonenose
Copy link
Contributor Author

L'exemple ol-drawing-bundle-options-popup ne m'affiche aucune pop-up, hors l'option diisplay est à true

Une CSS à minima pour la popup est à ajouter :

.popup {
    display: block;
    position: absolute;
    background-color: white;
    border: 1px solid #cccccc;
}

Le code à minima de la fonction doit retourner un élément DOM :

popup : {
     display : true,
     function : function (params) {
          var container = document.createElement("div");
          container.className = "popup";
         // - params.geomType;
         // - params.feature;
         // Les 2 fonctions ferment la popup avec ou sans sauvegarde des informations
         // dans les properties de la feature (key : description)
         // - params.saveFunc(message);
         // - params.closeFunc();
         // la fonction doit retourner un élément DOM 
         return container;
     }
 });


@lowzonenose
Copy link
Contributor Author

Dans la jsdoc, spécifier qu'un élément de DOM doit être retourné par la fonction donnée en paramètre de l'option pop-up du widget de dessin ?

Extrait de la jsdoc :

image

Avec un exemple dans la jsdoc :

image

@lowzonenose
Copy link
Contributor Author

Petit problème quand on superpose plusieurs polygones de "découpe" au sein d'un même polygone à "trouer"

Exact, créer un trou sur un polygone troué provoque un comportement inattendu :
image

@pjjmunier
Copy link
Contributor

Je pense que c'est le même problème que celui précédemment évoqué, mais si on dessine un petit trou puis un grand trou englobant le petit alors le petit trou devient une île et on se retrouve avec un multipolygone.

@pjjmunier
Copy link
Contributor

Je me demande s'il ne serait pas mieux d'avoir un seul bouton de dessin de polygon et de faire les trous en maintenant enfoncé un touche (ctl ou alt...)
En plus ça permettrait d'ajouter des trous en mode édition.
Et aussi d'être plus clair sur lequel de 2 polygones superposés on souhaite réaliser un trou.

@pjjmunier
Copy link
Contributor

Et du coup je me demande si ce serait possible d'autoriser les multipolygones.
Si oui, la fonctionnalité de trou deviendrait plutot un outil de soustraction de surface qui permettrait en plus de réaliser des trous de 'rogner'/'découper' une surface.

  • sans appui sur la touche 'spéciale' on ajoute des surfaces
  • avec appui sur la touche 'spéciale' on soustrait des surfaces

@saxrub
Copy link

saxrub commented May 28, 2020

Bonjour
Je suis celui qui est à l'origine des deux demandes d'évolution des fonctions de dessins.
Pour les polygones troués, je trouve bonne et simple l'idée "Sans touche, on ajoute, avec, on troue".
Mes rêves les plus fous allaient vers les multipolygones ; ce serait super si c'était possible.
A mon sens, là où se situe la difficulté réside dans l'enchainement des actions. Avec la version actuelle, dès que le polygone est bouclé, un formulaire d'enregistrement s'affiche.
Mais comment proposer de trouer le plolygone, d'en ajouter un autre, lancer l'enregistrement ?
Ma proposition ; à la fin d'un bouclage (le premier et les suivants) il faudrait afficher un nouveau formulaire offrant trois possibilités : Ajouter un autre polygone, Créer un trou, Enregistrer.
Pascal

@lowzonenose lowzonenose closed this Jun 9, 2020
@elias75015 elias75015 deleted the feature-drawing-tools-hole branch June 9, 2020 18:03
@saxrub
Copy link

saxrub commented Jun 9, 2020 via email

@lowzonenose
Copy link
Contributor Author

Bonsoir Jean-Philippe N’étant pas familier avec gitHub, que faut-il que je comprennes au fait que la demande est close ? Cordialement Pascal

Je clôture la PR dans l'état car ceci répond à un besoin immédiat, et je fais passer le reste à faire en évolution (multipolygone) :
cf. #272
cf. #271

@saxrub
Copy link

saxrub commented Jun 9, 2020 via email

@elias75015
Copy link
Contributor

Bonjour,

Pour clarifier, cette Pull Request initiale (#267 ) a été séparée en deux PR pour plus de visibilité :

Ces deux PRs sont en cours de review et déstinées à être intégrées rapidement. Pour les tester dès maintenant, je vous invite à builder le projet sur les branches correspondantes ( feature-drawing-holes et feature-drawing-popup) et à lancer les exemples et la jsdoc.

Les issues #272 et #271 mentionnent les remarques qui ont été faites plus haut sur l'interface et les multipolygones. Il s'agit d'un plus gros développement et une reflexion est à mener sur le sujet.

Bonne journée

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants