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);
}