Files
maps-saas/packages/ios-swift-sdk/Sources/IntaleqMaps/Offline/IntaleqOfflineService.swift
T

57 lines
1.6 KiB
Swift

import Foundation
public struct InlqOfflineRegionDefinition: Codable {
public let bounds: InlqLatLngBounds
public let minZoom: Double
public let maxZoom: Double
public let styleUrl: String
public init(bounds: InlqLatLngBounds, minZoom: Double, maxZoom: Double, styleUrl: String) {
self.bounds = bounds
self.minZoom = minZoom
self.maxZoom = maxZoom
self.styleUrl = styleUrl
}
}
public struct InlqOfflineRegion: Codable {
public let id: Int64
public let name: String
public let definition: InlqOfflineRegionDefinition
public let completedTiles: Int64
public let totalTiles: Int64
}
/**
* Service for managing offline vector map tile packages in Intaleq Native iOS SDK.
* Mirrors OfflineService from Flutter SDK.
*/
public class IntaleqOfflineService {
public static let shared = IntaleqOfflineService()
private var regions: [Int64: InlqOfflineRegion] = [:]
private init() {}
public func downloadOfflineRegion(
definition: InlqOfflineRegionDefinition,
name: String,
progress: ((Double) -> Void)? = nil
) -> InlqOfflineRegion {
let id = Int64(Date().timeIntervalSince1970 * 1000)
let region = InlqOfflineRegion(id: id, name: name, definition: definition, completedTiles: 100, totalTiles: 100)
regions[id] = region
progress?(1.0)
return region
}
public func getListOfRegions() -> [InlqOfflineRegion] {
return Array(regions.values)
}
public func deleteOfflineRegion(id: Int64) -> Bool {
return regions.removeValue(forKey: id) != nil
}
}