Skip to content
12 changes: 4 additions & 8 deletions Mage/DataSourceMapViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class DataSourceMapViewModel {

@Published var annotations: [DataSourceAnnotation] = []
@Published var featureOverlays: [MKOverlay] = []
@Published var tileOverlays: [DataSourceTileOverlay] = []
@Published var tileOverlay: DataSourceTileOverlay?
Comment thread
danbenner-vega marked this conversation as resolved.

let requerySubject = PassthroughSubject<Void, Never>()

Expand Down Expand Up @@ -112,17 +112,13 @@ class DataSourceMapViewModel {
featureOverlays = features?.overlays ?? []
}

@discardableResult
private func createTileOverlays() -> [MKTileOverlay] {
Comment thread
danbenner-vega marked this conversation as resolved.
guard let repository = repository else {
return []
}
private func createTileOverlays() {
guard let repository = repository else { return }
let newOverlay = DataSourceTileOverlay(tileRepository: repository, key: key)
newOverlay.minimumZ = minZoom
newOverlay.maximumZ = maximumTileZoom

tileOverlays = [newOverlay]
return tileOverlays
tileOverlay = newOverlay
}

func itemKeys(
Expand Down
15 changes: 9 additions & 6 deletions Mage/Mixins/DataSourceMap.swift
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,11 @@ class DataSourceMap: MapMixin {
}
.store(in: &cancellable)

viewModel?.$tileOverlays
viewModel?.$tileOverlay
.receive(on: DispatchQueue.main)
.sink { [weak self] tileOverlays in
.sink { [weak self] tileOverlay in
Task { [weak self] in
await self?.updateTileOverlays(tileOverlays: tileOverlays)
await self?.updateTileOverlays(tileOverlay: tileOverlay)
}
}
.store(in: &cancellable)
Expand All @@ -86,7 +86,7 @@ class DataSourceMap: MapMixin {
}

@MainActor
private func updateTileOverlays(tileOverlays: [DataSourceTileOverlay]) {
private func updateTileOverlays(tileOverlay: DataSourceTileOverlay?) {
Comment thread
danbenner-vega marked this conversation as resolved.
Outdated
guard let mapView = mapView, let viewModel = viewModel else {
return
}
Expand All @@ -96,7 +96,8 @@ class DataSourceMap: MapMixin {
clearPreviousTiles(previousTiles: previousTiles)
return
}
mapView.addOverlays(tileOverlays, level: .aboveLabels)
guard let tileOverlay = tileOverlay else { return }
mapView.addOverlay(tileOverlay, level: .aboveLabels)
// give the map a chance to draw the new data before we take the old one off the map to prevent flashing
DispatchQueue.main.async {
Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.clearTimer), userInfo: previousTiles, repeats: false)
Expand Down Expand Up @@ -269,7 +270,9 @@ class DataSourceMap: MapMixin {
func removeMixin(mapView: MKMapView, mapState: MapState) {
mapView.removeOverlays(viewModel?.featureOverlays ?? [])
mapView.removeAnnotations(viewModel?.annotations ?? [])
mapView.removeOverlays(viewModel?.tileOverlays ?? [])
if let tileOverlay = viewModel?.tileOverlay {
mapView.removeOverlay(tileOverlay)
}
Comment thread
paulsolt-ofsw marked this conversation as resolved.
for cancellable in cancellable {
cancellable.cancel()
}
Expand Down