Это рабочий пример того, как вы можете интегрировать MGLMapView
с SwiftUI
.
. При использовании UIViewRepresentable
вам нужно реализовать два делегата: makeUIView
, которые будут возвращать ваше представление (вв этом случае MGLMapView
) и updateUIView
, которые получат тот же тип представления, что и тип, возвращенный в makeUIView
(снова MGLMapView
).
Вы можете использовать это для экспериментов.
Также я рекомендую вам ознакомиться с архитектурой React, чтобы лучше понять подход SwiftUI.
Вы можете улучшить этот пример, заставив ContentView
получить styleURL и попробовав различные стили в предварительном просмотре..
import Mapbox
import SwiftUI
struct ContentView : View {
var body: some View {
MapboxViewRepresentation(MGLStyle.streetsStyleURL)
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
struct MapboxViewRepresentation : UIViewRepresentable {
let styleURL: URL
init(_ styleURL: URL) {
self.styleURL = styleURL
}
func makeUIView(context: UIViewRepresentableContext<MapboxViewRepresentation>) -> MGLMapView {
let mapView = MGLMapView(frame: .zero, styleURL: styleURL)
return mapView
}
func updateUIView(_ uiView: MGLMapView, context: UIViewRepresentableContext<MapboxViewRepresentation>) {
}
}