Create A Region

Creating regions is designed to be easy for the user and you (the developer).
The Example Application contains a great way you might want to allow your users to choose a region to download, and it shows how to use Provider to share a created region and the number of approximate tiles it has to a download screen.

Types Of Region

All regions (before conversion to DownloadableRegion) implement BaseRegion.
The most basic type of region, defined by two North West and South East coordinates that create a LatLngBounds.
final region = RectangleRegion(
LatLng(), // North West
LatLng(), // South East
Skewed parallelograms (rectangles with a 3rd control point) or rotated rectangles are not currently supported
A more advanced type of region, defined by a center coordinate and radius (in kilometers).
final region = CircleRegion(
LatLng(), // Center
0, // KM Radius
If you have two coordinates, one center, and one on the edge of the circle you want, you can use 'latlong2's Distance.distance() method, as below:
final region = CircleRegion(
LatLng(), // Center
const Distance(roundResult: false).distance(
LatLng(), // Center
LatLng(), // Edge Coord
) / 1000; // Convert to KM
The most advanced type of region, defined by a list of coordinates and radius (in meters).
final region = LineRegion(
[LatLng(), LatLng(), ...], // Series of coordinates
0, // M Radius
After you've created your region, you can convert it to a drawable polygon (below), or convert it to a DownloadableRegion ready for downloading.

Converting To Drawable Polygons

All BaseRegions can be drawn on a map with minimal effort from you or the user, using toDrawable().
Internally, this uses the toOutline(s) method to generate the points forming the Polygon, then it places this/these polygons into a PolygonLayer.
© Luka Stillingfleet (JaffaKetchup)