extendMeters method

BoundingBox extendMeters(
  1. int meters
)

Creates a BoundingBox that is a fixed meter amount larger on all sides (but does not cross date line/poles).

@param meters extension (must be >= 0) @return an extended BoundingBox or this (if meters == 0)

Implementation

BoundingBox extendMeters(int meters) {
  assert(meters >= 0);
  if (meters == 0) {
    return this;
  }

  double verticalExpansion = Projection.latitudeDistance(meters);
  double horizontalExpansion = Projection.longitudeDistance(meters, max(minLatitude.abs(), maxLatitude.abs()));

  double minLat = max(Projection.LATITUDE_MIN, minLatitude - verticalExpansion);
  double minLon = max(Projection.LONGITUDE_MIN, minLongitude - horizontalExpansion);
  double maxLat = min(Projection.LATITUDE_MAX, maxLatitude + verticalExpansion);
  double maxLon = min(Projection.LONGITUDE_MAX, maxLongitude + horizontalExpansion);

  return BoundingBox(minLat, minLon, maxLat, maxLon);
}