RegionDownloader

@objc
public class RegionDownloader : NSObject

Hey! I need to download this area of the map. No problemo.

This class allows you to download all the tiles of a region of the map.

Internally what it does is to iterate over every tile coordinate within the region and request to a mapCache to download it by calling its loadTile method.

In order to keep track of the downloaded data you can implement ReguionDownloaderDelegate.

Based on the value of incrementInPercentageNotification the delegate will be called.

Experimental

  • Approximation of the average number of bytes of a tile (used with 256x256 tiles).

    Declaration

    Swift

    static let defaultAverageTileSizeBytes: UInt64
  • Region that will be downloaded.

    Initialized in the constructor

    Declaration

    Swift

    public let region: TileCoordsRegion
  • Cache that is going to be used for saving/loading the files.

    Declaration

    Swift

    public let mapCache: MapCacheProtocol
  • Total number of tiles to be downloaded.

    Declaration

    Swift

    public var totalTilesToDownload: TileNumber { get }
  • Number of tiles pending to be downloaded.

    Declaration

    Swift

    public var pendingTilesToDownload: TileNumber { get }
  • The variable that actually keeps the count of the downloaded bytes.

    Declaration

    Swift

    private var _downloadedBytes: UInt64
  • Total number of downloaded data bytes.

    Declaration

    Swift

    public var downloadedBytes: UInt64 { get }
  • Returns the average

    This can be used to estimate the amount of bytes pending to be downloaded.

    Declaration

    Swift

    public var averageTileSizeBytes: UInt64 { get }
  • Keeps the number of tiles already downloaded successfully or failed.

    Declaration

    Swift

    @objc
    dynamic public var downloadedTiles: TileNumber { get }
  • Number of successfully downloaded tiles.

    Declaration

    Swift

    private var _successfulTileDownloads: TileNumber
  • Keeps the number of tiles already downloaded.

    Declaration

    Swift

    @objc
    dynamic public var successfulTileDownloads: TileNumber { get }
  • Keeps the number of tiles failes to be downloaded. Publicly accessible through failledTIleDownloads.

    Declaration

    Swift

    private var _failedTileDownloads: TileNumber
  • Number of tiles to be downloaded

    Declaration

    Swift

    @objc
    dynamic public var failedTileDownloads: TileNumber { get }
  • Percentage to notify thought delegate. If set to >100 will only notify on finish download. If set to a percentage smaller than downloadedPercentage, it will never notify.

    Declaration

    Swift

    public var nextPercentageToNotify: Double
  • The downloader will notify the delegate every time this. For example if you set this to 5, it will notify when 5%, 10%, 15%, etc. Default value 5.

    Declaration

    Swift

    public var incrementInPercentageNotification: Double
  • Last percentage notified to the deletage.

    Declaration

    Swift

    var lastPercentageNotified: Double
  • Percentage of tiles pending to download.

    Declaration

    Swift

    public var downloadedPercentage: Double { get }
  • Delegate.

    Declaration

    Swift

    public var delegate: RegionDownloaderDelegate?
  • Queue to download the stuff.

    Declaration

    Swift

    lazy var downloaderQueue: DispatchQueue { get set }
  • Initializes the downloader with the region and the MapCache.

    Declaration

    Swift

    public init(forRegion region: TileCoordsRegion, mapCache: MapCacheProtocol)

    Parameters

    forRegion

    the region to be downloaded.

    mapCache

    the MapCache implementation used to download and store the downloaded data

  • Resets downloader counters.

    Declaration

    Swift

    public func resetCounters()
  • Starts download.

    Declaration

    Swift

    public func start()
  • Returns an estimation of the total number of bytes the whole region may occupy. Again, it is an estimation.

    Declaration

    Swift

    public func estimateRegionByteSize() -> UInt64