相關課程:http://hdjc8.com/hdjc/swiftUI/
SwiftUI並沒有包含MapView,這裏通過遵循UIViewRepresentable協議,在SwiftUI中集成UIKit中的WKMapView。
示例代碼:
import SwiftUI
import MapKit //首先導入需要使用到的MapKit框架。
//使當前的結構體遵循UIViewRepresentable協議。使用該協議的實例,可以在SwiftUI中創建和管理UIView對象。
struct ContentView : UIViewRepresentable {
//實現協議裏的makeUIView方法,用來初始化並返回一個MKMapView地圖視圖對象。
func makeUIView(context: UIViewRepresentableContext<ContentView>) -> MKMapView {
return MKMapView()
}
//接着實現協議裏的updatedUIView方法,用來設置地圖視圖需要加載的地理座標等參數。
func updateUIView(_ uiView: MKMapView, context: UIViewRepresentableContext<ContentView>) {
//設置地圖視圖顯示用戶所在的地理位置,並設置地圖類型爲衛星模式。
uiView.showsUserLocation = true
uiView.mapType = MKMapType.satellite
//初始化一個二維座標,並設置經緯度的數值。
let coordinate2D = CLLocationCoordinate2D(latitude: 39.915352, longitude: 116.397105)
//設置地圖視圖的縮放比例爲0.02。
let zoomLevel = 0.02
//初始化一個座標區域對象,作爲地圖視圖所要顯示的地理區域。
let region = MKCoordinateRegion(center: coordinate2D, span: MKCoordinateSpan(latitudeDelta: zoomLevel, longitudeDelta: zoomLevel))
//使地圖視圖顯示自定義的地理區域
uiView.setRegion(uiView.regionThatFits(region), animated: true)
}
}
查看運行結果: