Create A Region

Regions (BaseRegions) are geographical areas that do not yet have any of the necessary extra information to start a download (this is the responsibility ofDownloadableRegion).

There are 5 types of BaseRegion.

Rectangle

RectangleRegions are defined by a LatLngBounds: two opposite LatLngs.

final region = RectangleRegion(
    LatLngBounds(LatLng(0, 0), LatLng(1, 1)),
);

This is usually all you get from most apps, so why not give your user a unique experience with some of our other region types...

Circle

CircleRegions are defined by a center LatLng and radius in kilometers.

final region = CircleRegion(
    LatLng(0, 0), // Center coordinate
    1, // Radius in kilometers
);

If you instead have two coordinates, one in the center, and one on the edge, you can use 'latlong2's Distance.distance() method, as below:

final centerCoordinate = LatLng(0, 0); // Center coordinate
final region = CircleRegion(
    centerCoordinate,
    const Distance(roundResult: false).distance(
        centerCoordinate,
        LatLng(1, 1), // Edge coordinate
    ) / 1000; // Convert to kilometers
);

(Poly)Line

LineRegions are defined by a list of LatLngs, and a radius in meters.

This could be used to download tiles along a planned travel route, for example hiking or long-distance driving. Import coordinates from a routing engine, or from a GPX/KML file for maximum integration!

final region = LineRegion(
    [LatLng(0, 0), LatLng(1, 1), ...], // List of coordinates
    1000, // Radius in meters
);

This region may generate more tiles than strictly necessary to cover the specified region. This is due to an internal limitation with the region generation algorithm, which uses (rotated) rectangles to approximate the actual desired shape.

This type of region may consume more memory/RAM when generating tiles than other region types.

Custom Polygon

CustomPolygonRegions are defined by a list of LatLngs defining the outline of a simple polygon.

final region = CustomPolygonRegion(
    [LatLng(0, 0), LatLng(1, 1), ...], // List of coordinates
);

Polygons should not contain self-intersections. These may produce unexpected results.

Holes are not supported, however multiple CustomPolygonRegions may be downloaded at once using a MultiRegion.

Multi

MultiRegions are defined by a list of multiple BaseRegions (which may contain more nested MultiRegions).

When downloading, each sub-region specified is downloaded consecutively (to ensure that any start & end tile range defined is respected consistently.

toOutline is not supported by MultiRegion.

Recovered

RecoveredRegions aren't technically the same type of region as the others, as it doesn't inherit from BaseRegion.

It is a hybrid of a BaseRegion (region), with parts of the DownloadableRegion used to start the download, and some additional information about the recovery, such as the original store name & original download start time.

It can be converted to a DownloadableRegion given a TileLayer using toDownloadable.

For more info, see Recovery.

Last updated

© Luka Stillingfleet (JaffaKetchup)