我将 Mapbox SDK 安装到我的项目中,但我不明白如何将此代码片段与SwiftUI
.
我创建了一个 SwiftUIView
named MapView
,我在其中导入 Mapbox 框架。
我尝试使用UIViewRepresentable
协议,如苹果的教程,但没有成功。
import Mapbox
class MapView: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let styleURL = URL(string: "mapbox://styles/mapbox/outdoors-v9")
let mapView = MGLMapView(frame: view.bounds,
styleURL: styleURL)
mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
mapView.setCenter(CLLocationCoordinate2D(latitude: 45.52954,
longitude: -122.72317),
zoomLevel: 14,
animated: false)
view.addSubview(mapView)
}
}
我是 iOS 开发新手,所以任何帮助将不胜感激。
这是一个关于如何集成的工作示例MGLMapView
with SwiftUI
.
使用时UIViewRepresentable
你必须实现两个代表:makeUIView
这将返回您的视图(在本例中MGLMapView
) and updateUIView
它将接收与返回的视图类型相同的视图类型makeUIView
(again 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>) {
}
}
UPDATE:这是关于如何将 Mapbox 与 SwiftUI 集成的官方指南https://docs.mapbox.com/help/tutorials/ios-swiftui/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)