diff options
Diffstat (limited to 'iosApp/iosApp/Map/BaseMapView.swift')
-rw-r--r-- | iosApp/iosApp/Map/BaseMapView.swift | 73 |
1 files changed, 29 insertions, 44 deletions
diff --git a/iosApp/iosApp/Map/BaseMapView.swift b/iosApp/iosApp/Map/BaseMapView.swift index 46e9876..bf2c82b 100644 --- a/iosApp/iosApp/Map/BaseMapView.swift +++ b/iosApp/iosApp/Map/BaseMapView.swift @@ -17,7 +17,6 @@ */ import SwiftUI import Combine -import CryptoKit import WhirlyGlobeMaplyComponent import shared @@ -60,13 +59,11 @@ struct BaseMapView: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> MaplyViewController { let mapViewController = MaplyViewController(mapType: .typeFlat) - mapViewController.viewWrap = true mapViewController.delegate = context.coordinator - let tileInfo = tileInfoFrom(layer: mapLayer) - setZoomLimits(uiViewController: mapViewController, - minZoom: mapLayer.minZoom, - maxZoom: mapLayer.maxZoom) + let tileInfo = Utils.tileInfoFrom(layer: mapLayer) + mapViewController.setZoomLimits(minZoom: mapLayer.minZoom, + maxZoom: mapLayer.maxZoom) let sampleParams = MaplySamplingParams() sampleParams.coordSys = MaplySphericalMercator(webStandard: ()) @@ -82,10 +79,10 @@ struct BaseMapView: UIViewControllerRepresentable { loader?.imageFormat = .imageUShort565 context.coordinator.loader = loader - let latitude = 23.191 * Float.pi / 180 - let longitude = -100.36 * Float.pi / 180 - let point = MaplyCoordinate(x: longitude, y: latitude) - mapViewController.focusOn(point: point, height: 0.4) + DispatchQueue.main.async { + let point = MaplyCoordinateMakeWithDegrees(-100.36, 23.191) + mapViewController.focusOn(point: point, height: 0.4) + } return mapViewController } @@ -95,41 +92,15 @@ struct BaseMapView: UIViewControllerRepresentable { context.coordinator.link = link // MARK: - Set map layer - context.coordinator.loader?.changeTileInfo(tileInfoFrom(layer: mapLayer)) - setZoomLimits(uiViewController: uiViewController, - minZoom: mapLayer.minZoom, - maxZoom: mapLayer.maxZoom) + context.coordinator.loader?.changeTileInfo(Utils.tileInfoFrom(layer: mapLayer)) + uiViewController.setZoomLimits(minZoom: mapLayer.minZoom, + maxZoom: mapLayer.maxZoom) } - - static func dismantleUIViewController(_ uiViewController: MaplyViewController, coordinator: Coordinator) { coordinator.loader?.shutdown() uiViewController.teardown() } - - private func tileInfoFrom(layer: MapLayer) -> MaplyRemoteTileInfoNew { - let cacheDir = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0] - let thisCacheDir = "\(cacheDir)/\(Utils.MD5(string: mapLayer.url))" - - let tileInfo = MaplyRemoteTileInfoNew(baseURL: mapLayer.url, - minZoom: mapLayer.minZoom, - maxZoom: mapLayer.maxZoom) - tileInfo.cacheDir = thisCacheDir - return tileInfo - } - - private func setZoomLimits(uiViewController: MaplyViewController, minZoom: Int32, maxZoom: Int32) { - uiViewController.setZoomLimitsMin( - uiViewController.height(forMapScale: Float(truncating: - MapCalculus.companion.zoomLevelToScale(zoom: maxZoom) - ?? MapCalculus.companion.zoomLevelToScale(zoom: 21)! - )), - max: uiViewController.height(forMapScale: Float(truncating: - MapCalculus.companion.zoomLevelToScale(zoom: minZoom) - ?? MapCalculus.companion.zoomLevelToScale(zoom: 1)! - ))) - } } extension MaplyViewController { @@ -139,11 +110,13 @@ extension MaplyViewController { } func action(_ action: Action) { - switch action { - case .zoomIn: - zoomIn() - case .zoomOut: - zoomOut() + DispatchQueue.main.async { + switch action { + case .zoomIn: + self.zoomIn() + case .zoomOut: + self.zoomOut() + } } } @@ -167,6 +140,18 @@ extension MaplyViewController { let zoom = currentMapScale() * 2 focusOn(point: pos, height: height(forMapScale: zoom)) } + + func setZoomLimits(minZoom: Int32, maxZoom: Int32) { + setZoomLimitsMin( + height(forMapScale: Float(truncating: + MapCalculus.companion.zoomLevelToScale(zoom: maxZoom) + ?? MapCalculus.companion.zoomLevelToScale(zoom: 21)! + )), + max: height(forMapScale: Float(truncating: + MapCalculus.companion.zoomLevelToScale(zoom: minZoom) + ?? MapCalculus.companion.zoomLevelToScale(zoom: 1)! + ))) + } } // Source: https://stackoverflow.com/questions/65923718 |