LatLonBounds class
An instance of this class represents a rectangular are in geograpic coordinates (lat/lon).
class LatLonBounds { double _minLat; double _minLon; double _maxLat; double _maxLon; /** * Creates the bounds given the southwest corner [min] * and the northeast corner [max]. * * Both [min] are [max] must be objects accepted by * [LatLon.from]. * * ## Examples * var b1 = new LatLonBounds(new LonLat(0,0), new LonLat(1,1)); * var b1 = new LatLonBounds([0,0], [1,1]); * var b1 = new LatLonBounds({"lon": 0, "lat": 0}, {"lon": 1, "lat": 1}); */ LatLonBounds(min, max) { min = new LatLon.from(min); max = new LatLon.from(max); _minLat = min.lat; _minLon = min.lon; _maxLat = max.lat; _maxLon = max.lon; } /** * Create a bounds objects from another value [other]. * * ## Possible values for [other] * * * a [LatLonBounds] -> creates a copy of [other] */ factory LatLonBounds.from(other) { if (other is LatLonBounds) { return new LatLonBounds( other.southWest, other.northEast ); } throw new ArgumentError("can't create a LatLonBounds from $other"); } /// the south-west corner LatLon get southWest => new LatLon(_minLat, _maxLon); /// the south-east corner LatLon get southEast => new LatLon(_minLat, _maxLon); /// the north-east corner LatLon get northEast => new LatLon(_maxLat, _maxLon); /// the north-west corner LatLon get northWest => new LatLon(_minLat, _maxLon); /// the center point LatLon get center => new LatLon((_minLat + _maxLat) / 2, (_minLon + _maxLon) / 2); _containsPoint(LatLon p) => p.lat >= _minLat && p.lat <= _maxLat && p.lon >= _minLon && p.lon <= _maxLon; _containsBounds(LatLonBounds b) => _containsPoint(b.southWest) && _containsPoint(b.northEast); /** * Checks wheter [obj] is within this bounds. * * ## Possible values for [obj] * * a [LatLon] -> checks whether the point is this bounds * * a [LatLonBounds] -> checks whether the bounds are completely in this * bounds * * Throws [ArgumentError] if [obj] is either null or of an * unexpected type. */ bool contains(obj) { if (obj is LatLon) return _containsPoint(obj); if (obj is LatLonBounds) return _containsBounds(obj); throw new ArgumentError("expected LatLon or LatLonBounds, got $obj"); } /** * Checks whether [b] interesects with this bounds. * * Replies true, if [b] interesects, false otherwise. * Throws [ArgumentError] if [b] is null or of an unexpected type */ bool intersects(LatLonBounds b) { if (b == null) throw new ArgumentError("b must not be null"); return _containsPoint(b.southWest) || _containsPoint(b.southEast) || _containsPoint(b.northWest) || _containsPoint(b.northEast); } }
Constructors
new LatLonBounds(min, max) #
Creates the bounds given the southwest corner min and the northeast corner max.
Both
min are
max must be objects accepted by
LatLon.from
.
Examples
var b1 = new LatLonBounds(new LonLat(0,0), new LonLat(1,1));
var b1 = new LatLonBounds([0,0], [1,1]);
var b1 = new LatLonBounds({"lon": 0, "lat": 0}, {"lon": 1, "lat": 1});
LatLonBounds(min, max) { min = new LatLon.from(min); max = new LatLon.from(max); _minLat = min.lat; _minLon = min.lon; _maxLat = max.lat; _maxLon = max.lon; }
factory LatLonBounds.from(other) #
Create a bounds objects from another value other.
Possible values for other
- a LatLonBounds -> creates a copy of other
factory LatLonBounds.from(other) { if (other is LatLonBounds) { return new LatLonBounds( other.southWest, other.northEast ); } throw new ArgumentError("can't create a LatLonBounds from $other"); }
Properties
final LatLon center #
the center point
LatLon get center => new LatLon((_minLat + _maxLat) / 2, (_minLon + _maxLon) / 2);
final LatLon northEast #
the north-east corner
LatLon get northEast => new LatLon(_maxLat, _maxLon);
final LatLon northWest #
the north-west corner
LatLon get northWest => new LatLon(_minLat, _maxLon);
Methods
bool contains(obj) #
Checks wheter obj is within this bounds.
Possible values for obj
- a LatLon -> checks whether the point is this bounds
-
a LatLonBounds -> checks whether the bounds are completely in this bounds
Throws ArgumentError
if
obj is either null or of an
unexpected type.
bool contains(obj) { if (obj is LatLon) return _containsPoint(obj); if (obj is LatLonBounds) return _containsBounds(obj); throw new ArgumentError("expected LatLon or LatLonBounds, got $obj"); }
bool intersects(LatLonBounds b) #
Checks whether b interesects with this bounds.
Replies true, if
b interesects, false otherwise.
Throws ArgumentError
if
b is null or of an unexpected type
bool intersects(LatLonBounds b) { if (b == null) throw new ArgumentError("b must not be null"); return _containsPoint(b.southWest) || _containsPoint(b.southEast) || _containsPoint(b.northWest) || _containsPoint(b.northEast); }