getAddress static method

Future<String> getAddress(
  1. double lat,
  2. double lng
)

Converts latitude/longitude coordinates to a human-readable address.

Returns "Address not found" if the request fails or no address is found. Always returns addresses in English.

Implementation

static Future<String> getAddress(double lat, double lng) async {
  try {
    final uri = Uri.parse(
      '$_nominatimEndpoint?format=json&lat=$lat&lon=$lng'
      '&zoom=18&addressdetails=1&accept-language=en',
    );

    final response = await http
        .get(
          uri,
          headers: {'User-Agent': _userAgent, 'Accept': 'application/json'},
        )
        .timeout(
          const Duration(seconds: 10),
          onTimeout: () => throw Exception('Request timed out'),
        );

    if (response.statusCode == 200) {
      final data = jsonDecode(response.body) as Map<String, dynamic>;
      final displayName = data['display_name'] as String?;

      if (displayName != null && displayName.isNotEmpty) {
        return displayName;
      }
    }

    return 'Address not found';
  } catch (_) {
    return 'Address not found';
  }
}