From c045eed41add60ecacbf00ca942053242a9e8ce5 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Wed, 1 Sep 2021 19:11:12 +0200 Subject: [PATCH] Mapbox Autocomplete: handle cases where house number comes in front of address --- .../autocomplete/MapboxAutocompleteProvider.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/net/vonforst/evmap/autocomplete/MapboxAutocompleteProvider.kt b/app/src/main/java/net/vonforst/evmap/autocomplete/MapboxAutocompleteProvider.kt index 7bd466b1..0b92e43c 100644 --- a/app/src/main/java/net/vonforst/evmap/autocomplete/MapboxAutocompleteProvider.kt +++ b/app/src/main/java/net/vonforst/evmap/autocomplete/MapboxAutocompleteProvider.kt @@ -36,11 +36,19 @@ class MapboxAutocompleteProvider(val context: Context) : AutocompleteProvider { } return result.body()!!.features().map { feature -> results[feature.id()!!] = feature + var secondaryText = (feature.matchingPlaceName() ?: feature.placeName())!! + + val matchingText = (feature.matchingText() ?: feature.text())!! val primaryText = - (feature.matchingText() ?: feature.text())!! + (feature.address()?.let { " $it" } - ?: "") - val secondaryText = - (feature.matchingPlaceName() ?: feature.placeName())!!.replace("$primaryText, ", "") + if (feature.address() != null && secondaryText.startsWith(feature.address() + " " + matchingText)) { + // countries where house number comes in front of road ("10 Downing Street") + feature.address() + " " + matchingText + } else { + // countries where house number comes after road ("Willy-Brandt-Str. 1") + matchingText + (feature.address()?.let { " $it" } ?: "") + } + + secondaryText = secondaryText.replace("$primaryText, ", "") AutocompletePlace( highlightMatch(primaryText, query), secondaryText,