getMaxTileNumber static method

int getMaxTileNumber(
  1. int zoomLevel
)

Returns true if two tile areas, defined by upper left and lower right tiles, overlap. Precondition: zoom levels of upperLeft/lowerRight and upperLeftOther/lowerRightOther are the same.

@param upperLeft tile in upper left corner of area 1. @param lowerRight tile in lower right corner of area 1. @param upperLeftOther tile in upper left corner of area 2. @param lowerRightOther tile in lower right corner of area 2. @return true if the areas overlap, false if zoom levels differ or areas do not overlap. @return the maximum valid tile number for the given zoom level, 2zoomLevel -1.

Implementation

// static bool tileAreasOverlap(Tile upperLeft, Tile lowerRight, Tile upperLeftOther, Tile lowerRightOther) {
//   if (upperLeft.zoomLevel != upperLeftOther.zoomLevel || upperLeft.indoorLevel != upperLeftOther.indoorLevel) {
//     return false;
//   }
//   if (upperLeft == (upperLeftOther) && lowerRight == lowerRightOther) {
//     return true;
//   }
//   return getBoundaryAbsoluteStatic(upperLeft, lowerRight).intersects(getBoundaryAbsoluteStatic(upperLeftOther, lowerRightOther));
// }

/// @return the maximum valid tile number for the given zoom level, 2<sup>zoomLevel</sup> -1.
static int getMaxTileNumber(int zoomLevel) {
  if (zoomLevel < 0) {
    throw new Exception("zoomLevel must not be negative: $zoomLevel");
  } else if (zoomLevel == 0) {
    return 0;
  }
  return (2 << zoomLevel - 1) - 1;
}