perliedman / leaflet-control-geocoder

A simple geocoder form to locate places. Easily extended to multiple data providers.
http://www.liedman.net/leaflet-control-geocoder/
BSD 2-Clause "Simplified" License
564 stars 221 forks source link

Message "not Found" while there is some answers being shown #321

Open lesateliersapicius opened 3 years ago

lesateliersapicius commented 3 years ago

Hello,

I was wondering if there was not a problem, in the function "_geocodeResult" of Control.Geocoder.js.

private _geocodeResult(results: GeocodingResult[], suggest: boolean) {
  if (!suggest && this.options.showUniqueResult && results.length === 1) {
    this._geocodeResultSelected(results[0]);
  } else if (results.length > 0) {
    this._alts.innerHTML = '';
    this._results = results;
    L.DomUtil.removeClass(this._alts, 'leaflet-control-geocoder-alternatives-minimized');
    L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-options-open');
    for (let i = 0; i < results.length; i++) {
      this._alts.appendChild(this._createAlt(results[i], i));
    }
  } else {
    L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-options-error');
    L.DomUtil.addClass(this._errorElement, 'leaflet-control-geocoder-error');
  }
}

If at one point I do not have any result, the errorElement will be shown. If I change my query, I do get new result but the message "Not found" is still being displayed. image

I was wondering if this was meant to or not ?

I did a few change locally for me

private _geocodeResult(results: GeocodingResult[], suggest: boolean) {
  if (!suggest && this.options.showUniqueResult && results.length === 1) {
    this._geocodeResultSelected(results[0]);
  } else if (results.length > 0) {
    this._alts.innerHTML = '';
    this._results = results;
    L.DomUtil.removeClass(this._errorElement, 'leaflet-control-geocoder-error');
    L.DomUtil.removeClass(this._alts, 'leaflet-control-geocoder-alternatives-minimized');
    L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-options-open');
    for (let i = 0; i < results.length; i++) {
      this._alts.appendChild(this._createAlt(results[i], i));
    }
  } else {
    this._alts.innerHTML = '';
    L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-options-error');
    L.DomUtil.addClass(this._errorElement, 'leaflet-control-geocoder-error');
  }
}

I will create a pull request, if this need to be corrected