diff --git a/lib/src/location_picker.dart b/lib/src/location_picker.dart index 40d9fa1..eef5e79 100644 --- a/lib/src/location_picker.dart +++ b/lib/src/location_picker.dart @@ -170,6 +170,19 @@ class FlutterLocationPicker extends StatefulWidget { /// ``` final String nominatimHost; + /// **OPTIONAL** - Custom Nominatim server hostname + /// + /// Some custom providers require a custom prefix path for their API. + /// E.g. locationIQ requires a `/v1` prefix path to construct + /// https://us1.locationiq.com/v1/reverse + /// + /// **Default**: null + /// + /// Example: + /// ```dart + /// nominatimPrefixPath : '/v1', + /// ``` + final String? nominatimPrefixPath; /// **OPTIONAL** - Additional query parameters for Nominatim requests /// /// Add custom parameters or override defaults for geocoding requests. @@ -431,6 +444,7 @@ class FlutterLocationPicker extends StatefulWidget { // Nominatim configuration this.nominatimHost = 'nominatim.openstreetmap.org', + this.nominatimPrefixPath, this.nominatimAdditionalQueryParameters, this.nominatimZoomLevel, this.countryFilter, @@ -549,6 +563,7 @@ class FlutterLocationPicker extends StatefulWidget { // Nominatim configuration this.nominatimHost = 'nominatim.openstreetmap.org', + this.nominatimPrefixPath, this.nominatimAdditionalQueryParameters, this.nominatimZoomLevel, this.countryFilter, @@ -860,6 +875,7 @@ class _FlutterLocationPickerState extends State void _initializeServices() { _geocodingService = GeocodingService( nominatimHost: widget.nominatimHost, + prefixPath: widget.nominatimPrefixPath, userAgent: widget.userAgent, language: _mapConfig.mapLanguage, additionalQueryParameters: widget.nominatimAdditionalQueryParameters, diff --git a/lib/src/services/geocoding_service.dart b/lib/src/services/geocoding_service.dart index 30b894f..db0fbbd 100644 --- a/lib/src/services/geocoding_service.dart +++ b/lib/src/services/geocoding_service.dart @@ -10,13 +10,14 @@ class GeocodingService { final String language; final Map? additionalQueryParameters; final String? countryFilter; - + final String? prefixPath; const GeocodingService({ required this.nominatimHost, required this.userAgent, this.language = 'en', this.additionalQueryParameters, this.countryFilter, + this.prefixPath, }); /// Gets proper HTTP headers for Nominatim API requests @@ -55,8 +56,7 @@ class GeocodingService { queryParameters.addAll(additionalQueryParameters!); } - final uri = Uri.https(nominatimHost, '/reverse', queryParameters); - + final uri = Uri.https(nominatimHost, '${prefixPath ?? ''}/reverse', queryParameters); final response = await client .get( uri,