SwiftUI并没有包含MapView,这里通过遵循UIViewRepresentable协议,在SwiftUI中集成UIKit中的WKMapView。
示例代码:
1import SwiftUI 2import MapKit //首先导入需要使用到的MapKit框架。 3 4//使当前的结构体遵循UIViewRepresentable协议。使用该协议的实例,可以在SwiftUI中创建和管理UIView对象。 5struct ContentView : UIViewRepresentable { 6 7 //实现协议里的makeUIView方法,用来初始化并返回一个MKMapView地图视图对象。 8 func makeUIView(context: UIViewRepresentableContext<ContentView>) -> MKMapView { 9 return MKMapView() 10 } 11 12 //接着实现协议里的updatedUIView方法,用来设置地图视图需要加载的地理坐标等参数。 13 func updateUIView(_ uiView: MKMapView, context: UIViewRepresentableContext<ContentView>) { 14 15 //设置地图视图显示用户所在的地理位置,并设置地图类型为卫星模式。 16 uiView.showsUserLocation = true 17 uiView.mapType = MKMapType.satellite 18 19 //初始化一个二维坐标,并设置经纬度的数值。 20 let coordinate2D = CLLocationCoordinate2D(latitude: 39.915352, longitude: 116.397105) 21 22 //设置地图视图的缩放比例为0.02。 23 let zoomLevel = 0.02 24 25 //初始化一个坐标区域对象,作为地图视图所要显示的地理区域。 26 let region = MKCoordinateRegion(center: coordinate2D, span: MKCoordinateSpan(latitudeDelta: zoomLevel, longitudeDelta: zoomLevel)) 27 //使地图视图显示自定义的地理区域 28 uiView.setRegion(uiView.regionThatFits(region), animated: true) 29 } 30}
查看运行结果:
