extendMargin method

BoundingBox extendMargin(
  1. double margin
)

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

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

Implementation

BoundingBox extendMargin(double margin) {
  assert(margin >= 1);
  if (margin == 1) {
    return this;
  }

  double verticalExpansion = (getLatitudeSpan() * margin - getLatitudeSpan()) * 0.5;
  double horizontalExpansion = (getLongitudeSpan() * margin - getLongitudeSpan()) * 0.5;

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