Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Mapbox默认搜索UI集成到SwiftUI时出现问题_Swift_Swiftui_Mapbox_Mapbox Ios - Fatal编程技术网

将Mapbox默认搜索UI集成到SwiftUI时出现问题

将Mapbox默认搜索UI集成到SwiftUI时出现问题,swift,swiftui,mapbox,mapbox-ios,Swift,Swiftui,Mapbox,Mapbox Ios,最近我尝试将Mapbox默认搜索UI集成到我的项目中。我的项目基本上是基于SwiftUI的,Mapbox网站上的使用示例是使用UIKit。我试图将UIKit包装到SwiftUI代码中。以下是我在符合协议“UIViewControllerRepresentable”的SearchController上写的内容: struct Search: UIViewControllerRepresentable, LocationProvider { let userCoordinat

最近我尝试将Mapbox默认搜索UI集成到我的项目中。我的项目基本上是基于SwiftUI的,Mapbox网站上的使用示例是使用UIKit。我试图将UIKit包装到SwiftUI代码中。以下是我在符合协议“UIViewControllerRepresentable”的SearchController上写的内容:

    struct Search: UIViewControllerRepresentable, LocationProvider {
        let userCoordinate = CLLocationCoordinate2D(latitude: 37.785834, longitude: -122.406417)
        
        /// `LocationProvider` protocol implementation
        func currentLocation() -> CLLocationCoordinate2D? { userCoordinate }
        
        func makeUIViewController(context: UIViewControllerRepresentableContext<Search>) -> MapboxPanelController {
            let searchController = MapboxSearchController(locationProvider: self)
            
            // default panel
            let panelController = MapboxPanelController(rootViewController: searchController)
            
            searchController.delegate = context.coordinator
            
            return panelController
        }
        
        func updateUIViewController(_ uiViewController: MapboxPanelController, context: UIViewControllerRepresentableContext<Search>) {
        }
    ...
   }
NavigationMap()是我在另一个文件上创建的映射视图。基本上,我在这里尝试的是通过Mapbox添加一个默认的panelController作为NavigationMap的子视图。但我运行的结果是,我无法再与NavigationMap交互。似乎searchController完全覆盖了NavigationMap,甚至还有panelController,它允许您上下拖动面板。我不知道我做错了什么。以下是Mapbox提供的原始文档:

   class SimpleUISearchViewController: UIViewController, LocationProvider {
 
        lazy var searchController = MapboxSearchController(locationProvider: self)
 
        /// `LocationProvider` protocol implementation
        func currentLocation() -> CLLocationCoordinate2D? { mapboxSFOfficeCoordinate }
 
        lazy var panelController = MapboxPanelController(rootViewController: searchController)
 
        let mapView = MGLMapView()
 
        let mapboxSFOfficeCoordinate = CLLocationCoordinate2D(latitude: 37.7911551, longitude: -122.3966103)
 
        override func viewDidLoad() {
            super.viewDidLoad()
 
            /// Add MGLMapView on the screen
            mapView.frame = view.bounds
            mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            mapView.showsUserLocation = true
 
            mapView.setCenter(mapboxSFOfficeCoordinate, zoomLevel: 15, animated: false)
            view.addSubview(mapView)
 
            searchController.delegate = self
            addChild(panelController)
        }
        ...
   }
我不知道为什么我在SwiftUI中实现了错误的方式,或者它提供的默认文档不能完全支持SwiftUI。有人能帮我吗?我很感激

   class SimpleUISearchViewController: UIViewController, LocationProvider {
 
        lazy var searchController = MapboxSearchController(locationProvider: self)
 
        /// `LocationProvider` protocol implementation
        func currentLocation() -> CLLocationCoordinate2D? { mapboxSFOfficeCoordinate }
 
        lazy var panelController = MapboxPanelController(rootViewController: searchController)
 
        let mapView = MGLMapView()
 
        let mapboxSFOfficeCoordinate = CLLocationCoordinate2D(latitude: 37.7911551, longitude: -122.3966103)
 
        override func viewDidLoad() {
            super.viewDidLoad()
 
            /// Add MGLMapView on the screen
            mapView.frame = view.bounds
            mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            mapView.showsUserLocation = true
 
            mapView.setCenter(mapboxSFOfficeCoordinate, zoomLevel: 15, animated: false)
            view.addSubview(mapView)
 
            searchController.delegate = self
            addChild(panelController)
        }
        ...
   }