Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ANSCoder/SwiftUI-MapView

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

9 Commits

Repository files navigation

SwiftUI-MapView

Basic Map view in Swift UI.

Screenshot 2019年12月12日 at 11 54 28 PM

Create MapView in SwiftUI.

import SwiftUI
import MapKit
struct MapView: UIViewRepresentable {
 
 let landmarks = LandmarkAnnotation.requestMockData()
 
 func makeCoordinator() -> MapViewCoordinator {
 MapViewCoordinator(self)
 }
 
 /**
 - Description - Replace the body with a make UIView(context:) method that creates and return an empty MKMapView
 */
 func makeUIView(context: Context) -> MKMapView{
 MKMapView(frame: .zero)
 }
 
 func updateUIView(_ view: MKMapView, context: Context){
 //If you changing the Map Annotation then you have to remove old Annotations
 //mapView.removeAnnotations(mapView.annotations)
 view.delegate = context.coordinator
 view.addAnnotations(landmarks)
 }
}

Mixing UIKit inside SwiftUI by using Coordinator.

import MapKit
/*
 Coordinator for using UIKit inside SwiftUI.
 */
class MapViewCoordinator: NSObject, MKMapViewDelegate {
 
 var mapViewController: MapView
 
 init(_ control: MapView) {
 self.mapViewController = control
 }
 
 func mapView(_ mapView: MKMapView, viewFor
 annotation: MKAnnotation) -> MKAnnotationView?{
 //Custom View for Annotation
 let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "customView")
 annotationView.canShowCallout = true
 //Your custom image icon
 annotationView.image = UIImage(named: "locationPin")
 return annotationView
 }
}

Checkout my complete blog here.

AltStyle によって変換されたページ (->オリジナル) /