分层表视图和谷歌地图视图iOS Swift

时间:2015-08-06 17:22:07

标签: ios swift google-maps-sdk-ios

我正在尝试使用ios中的google maps sdk设置地图搜索。到目前为止,我已经自动完成搜索正常工作,当我搜索时,结果显示在tableview中。我希望能够在表格视图中单击一个单元格并显示地图,然后在用户触摸回搜索框时再次显示该表格。我这样做的策略是将mapview和表视图分层放在相同的视图Controller中,并显示/隐藏或将任何视图推到顶部。但是,因为谷歌地图不是mapkit的一部分,我不确定我是否可以像这样操纵它。如果您知道一种简单的方法,请告诉我。将视图设置为tableview也会导致黑屏

mapView.hidden只显示黑屏

 override func viewDidLoad() {
    super.viewDidLoad()

    self.tableView.dataSource = self
    self.tableView.delegate = self

    self.resultSearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()

        self.tableView.tableHeaderView = controller.searchBar

        return controller
    })()
    view.bringSubviewToFront(self.tableView)
    placesClient = GMSPlacesClient()
    var camera = GMSCameraPosition.cameraWithLatitude(-33.86,
        longitude: 151.20, zoom: 6)
    var mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)
    //mapView.hidden = true

    mapView.myLocationEnabled = true
    self.view = mapView
    self.view = self.tableView
    var marker = GMSMarker()
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20)
    marker.title = "Sydney"
    marker.snippet = "Australia"
    marker.map = mapView

}

我正在使用谷歌地图cocoapod

2 个答案:

答案 0 :(得分:1)

这取决于它们在视图控制器的子视图列表中的顺序。如果mapViewtableView都是根view的直接子视图,则只需拨打insertSubview:belowSubview:

即可
[self.view insertSubview:mapView belowSubview:tableView];

反之亦然。

答案 1 :(得分:0)

我发现我必须添加自己的子视图,将该子视图的类更改为GMSMapview并将地图指定给该子视图。

var camera = GMSCameraPosition.cameraWithLatitude(-33.86,
        longitude: 151.20, zoom: 6)

    var mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)
    mapView.myLocationEnabled = true

    self.mapSubView.camera = camera
    self.mapSubView = mapView