aboutsummaryrefslogtreecommitdiff
path: root/iosApp/iosApp/Map/BaseMapView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'iosApp/iosApp/Map/BaseMapView.swift')
-rw-r--r--iosApp/iosApp/Map/BaseMapView.swift73
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