regionForLoc method

RegionFeature? regionForLoc(
  1. double lon,
  2. double lat, {
  3. RegionLevel? level,
  4. RegionLevel? maxLevel,
  5. RegionProperties? withProp,
})

Returns the feature containing loc for the opts, if any.

Implementation

RegionFeature? regionForLoc(double lon, double lat,
    {RegionLevel? level, RegionLevel? maxLevel, RegionProperties? withProp}) {
  final targetLevel = level ?? RegionLevel.country;
  maxLevel ??= RegionLevel.world;

  if (maxLevel.index < targetLevel.index) return null;

  if (targetLevel == RegionLevel.country) {
    // attempt fast path for country-level coding
    final fastRegion = countryRegion(lon, lat);
    if (fastRegion != null && fastRegion.hasProperty(withProp)) {
      return fastRegion;
    }
  }

  final regions = regionsContaining(lon: lon, lat: lat);

  for (final region in regions) {
    if (region.level == targetLevel ||
        (region.level.index > targetLevel.index &&
            region.level.index <= maxLevel.index)) {
      if (region.hasProperty(withProp)) return region;
    }
  }
  return null;
}