IGNF / geoportal-extensions

French Geoportal Extensions for well-known javascript mapping libraries (Leaflet and OpenLayers)
https://ignf.github.io/geoportal-extensions/
Other
64 stars 33 forks source link

Ajout event 'reverse:onclickresult' sur le controle ReverseGeocoding #351

Closed lowzonenose closed 1 year ago

lowzonenose commented 1 year ago

cf. #350

liitfr commented 1 year ago

je reviens vers vous car je réalise que cette fonctionnalité n'est pas implémentée pour OL dans ce change, J'ai testé quelque chose, qui a l'air de fonctionner.

Dans ReverseGeocode,

  1. Faire porter la location par la feature (vierge de toute transformation popupcontent) :
    feature.setProperties({
      popupContent: this._fillPopupContent(location),
      location,
    });
  2. dispatcher l'event en cas de click :
    feature.on("click", (e) => {
      this.dispatchEvent({
        type: "reverse:onclickresult",
        location,
      });
      this._onResultsFeatureSelect(e);
    });

    NB : Cette modification n'a pas l'air d'émettre aucun évenement. En revanche la suivante, oui :

  3. Modification de la méthode _displayGeocodedLocationsOnMap pour dispatcher l'event :
      // au click : affichage popup
      this._resultsSelectInteraction = new SelectInteraction({
        layers: [this._resultsFeaturesLayer],
      });
      this._resultsSelectInteraction.on("select", (e) => {
        if (e.selected.length > 0) {
          const f = e.selected[0];
          const location = f.getProperties().location;
          this.dispatchEvent({
            type: "reverse:onclickresult",
            location,
          });
        }
        this._onResultsFeatureSelect(e);
      });
      map.addInteraction(this._resultsSelectInteraction);

    En faisant cela, les évenements reverse:onclickresult sont bien émis.

J'espère que ça vous fera gagner du temps, même si je me doute que vous voudrez retravailler ce code.

Cordialement,

azarz commented 1 year ago

Bonjour,

Une PR est en cours sur ol, vous pouvez la consulter ici : https://github.com/IGNF/geoportal-extensions/pull/356