getForLatLon method

  1. @override
HgtFile getForLatLon(
  1. double latitude,
  2. double longitude
)
override

Implementation

@override
HgtFile getForLatLon(double latitude, double longitude) {
  final baseLat = (latitude / step).floor() * step;
  final baseLon = (longitude / step).floor() * step;
  final filename = buildFilename(baseLat: baseLat, baseLon: baseLon);

  final cached = _cache[filename];
  if (cached != null) {
    return cached;
  }
  HgtFile? hgt = _missingFiles.get(filename);
  if (hgt != null) {
    return hgt;
  }

  final file = File('$directoryPath${Platform.pathSeparator}$filename');

  hgt = HgtFile.readFromFile(file, baseLat: baseLat, baseLon: baseLon, tileWidth: step, tileHeight: step, rows: columnsPerDegree * step);
  _cache[filename] = hgt;

  if (hgt.rows == 0) {
    // missing
    _missingFiles.set(filename, hgt);
  }

  while (_cache.length > maxEntries) {
    _cache.remove(_cache.keys.first);
  }

  return hgt;
}