getAddress method
REVERSE GEOCODING: Get address from geocode
Implementation
Future<FmData?> getAddress({required double lat, required double lng}) async {
// 1. Check local db
try {
final data = await _dbService.getAddress(lat, lng);
if (data != null) return FmData.fromJSON(data);
} catch (e, st) {
_logService.logError(e, st);
}
// 2. Wait for new request
final success = await _waitForNewRequest(RequestType.nominatim);
if (!success) return null;
// 3. Make API call
final query = {'lat': lat, 'lon': lng, 'format': 'jsonv2'};
final url =
'${_reverseURL.url}?${query.keys.map((k) => '$k=${query[k]}').join('&')}';
final res = await _apiService.request(
url: url,
userAgent: _userAgent ?? _systemService.userAgent,
);
// 4. Parse & save response to local db
try {
await _dbService.saveAddress(lat, lng, res.data);
return FmData.fromJSON(res.data);
} catch (e, st) {
_logService.logError(e, st, req: '($lat, $lng)', res: res.toString());
return null;
}
}