From a64ef8d469d321eb61e9d0b972ffbe345613e88d Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 16 May 2025 17:25:47 +0200 Subject: [PATCH] feat(LocationView): show basic information about a selected location --- .../UserInterfaceState.xcuserstate | Bin 42734 -> 53279 bytes StepMap/AnnotationView.swift | 36 +++++++++++++++++ StepMap/UIKitMapView.swift | 38 ++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 StepMap/AnnotationView.swift diff --git a/StepMap.xcodeproj/project.xcworkspace/xcuserdata/oliverhnat.xcuserdatad/UserInterfaceState.xcuserstate b/StepMap.xcodeproj/project.xcworkspace/xcuserdata/oliverhnat.xcuserdatad/UserInterfaceState.xcuserstate index dd5d1595431348ca5fe0b6e60b4b21d41d5fc08d..39485ba4e4af17993ec57dcc77a9b32fd60a247e 100644 GIT binary patch literal 53279 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 diff --git a/StepMap/AnnotationView.swift b/StepMap/AnnotationView.swift new file mode 100644 index 0000000..3d6f807 --- /dev/null +++ b/StepMap/AnnotationView.swift @@ -0,0 +1,36 @@ +// +// AnnotationView.swift +// StepMap +// +// Created by Oliver Hnat on 16/05/2025. +// + +import SwiftUI +import MapKit + +struct AnnotationView: View { + var pm: CLPlacemark + var body: some View { + ZStack { + Rectangle() + .fill(.thinMaterial) + .ignoresSafeArea() + VStack { + Text(pm.locality ?? "") + Text(pm.name ?? "") + Text("Name: \(pm.name ?? "")") + Text("Street: \(pm.thoroughfare ?? "")") + Text("City: \(pm.locality ?? "")") + Text("Postal Code: \(pm.postalCode ?? "")") + Text("Country: \(pm.country ?? "")") + ForEach(pm.areasOfInterest ?? [], id: \.self) { area in + Text("Area: \(area)") + } + if let coordinate = pm.location?.coordinate { + let mkPlacemark = MKPlacemark(coordinate: coordinate) + Image(systemName: Defaults.getIconFor(pointOfInterest: MKMapItem(placemark: mkPlacemark).pointOfInterestCategory)) + } + } + } + } +} diff --git a/StepMap/UIKitMapView.swift b/StepMap/UIKitMapView.swift index 105be8f..4d19ea0 100644 --- a/StepMap/UIKitMapView.swift +++ b/StepMap/UIKitMapView.swift @@ -18,6 +18,7 @@ class UIKitMapView: UIViewController, MKMapViewDelegate, CLLocationManagerDelega var detailsDisplayed = false private var cancellables = Set() let searchViewConctroller: UIHostingController + var annotationViewController: UIHostingController? let mapView : MKMapView = { let map = MKMapView() map.showsUserTrackingButton = true @@ -120,6 +121,38 @@ class UIKitMapView: UIViewController, MKMapViewDelegate, CLLocationManagerDelega func mapView(_ mapView: MKMapView, didSelect annotation: any MKAnnotation) { hideSearchView() + hideAnnotationView() + showAnnotation(annotation: annotation) + } + + func showAnnotation(annotation: MKAnnotation) { + let location = CLLocation(latitude: annotation.coordinate.latitude, + longitude: annotation.coordinate.longitude) + CLGeocoder().reverseGeocodeLocation(location) { placemarks, error in + guard let placemark = placemarks?.first, error == nil else { return } + print(placemark) + + self.annotationViewController = UIHostingController(rootView: AnnotationView(pm: placemark)) + if let avc = self.annotationViewController { + avc.view.backgroundColor = .clear + avc.modalPresentationStyle = .pageSheet + avc.edgesForExtendedLayout = [.top, .bottom, .left, .right] + if let sheet = avc.sheetPresentationController { + let smallDetentId = UISheetPresentationController.Detent.Identifier("small") + let smallDetent = UISheetPresentationController.Detent.custom(identifier: smallDetentId) { context in + return 350 + } + sheet.detents = [smallDetent, .large()] + sheet.largestUndimmedDetentIdentifier = .large + sheet.prefersScrollingExpandsWhenScrolledToEdge = false + sheet.prefersGrabberVisible = true + sheet.prefersEdgeAttachedInCompactHeight = true + sheet.widthFollowsPreferredContentSizeWhenEdgeAttached = true + } + self.present(avc, animated: true, completion: nil) + } + } + } func mapView(_ mapView: MKMapView, didDeselect annotation: any MKAnnotation) { @@ -129,6 +162,11 @@ class UIKitMapView: UIViewController, MKMapViewDelegate, CLLocationManagerDelega func hideSearchView() { searchViewConctroller.dismiss(animated: true) } + func hideAnnotationView() { + if let avc = self.annotationViewController { + avc.dismiss(animated: true) + } + } private func bindViewModel() { viewModel.$directions