如何显示以下UIView?

时间:2019-04-18 18:11:31

标签: ios swift xcode uiview gmsmapview

我在其中一页上进行了以下设置:

https://imgur.com/a/Lzfnmm0

当前页面显示带有Google Maps的mapView,我假装将UIView显示在mapView的顶部...我尝试了任何操作,但mapView始终显示在UIView的顶部。我该如何解决?

这是我的页面代码:

import UIKit
import CoreLocation
import GoogleMaps
import GooglePlaces

class GoogleMapPage: UIViewController, CLLocationManagerDelegate{

    var placesClient: GMSPlacesClient!
    var addressName: String? = nil
    lazy var geocoder = CLGeocoder()
    var latitude: Double = 0.0
    var longitude: Double = 0.0


    @IBOutlet weak var mapView: GMSMapView!
    @IBOutlet weak var cameraButton: UIButton!
    @IBOutlet weak var menuButton: UIButton!
    @IBOutlet weak var sideMenu: UIView!


    let locationManager = CLLocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        locationManager.delegate = self
        locationManager.requestWhenInUseAuthorization()

        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestLocation()
        placesClient = GMSPlacesClient.shared()

        mapView.bringSubviewToFront(cameraButton)
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){
        if let location = locations.first {
            createMap(location.coordinate.longitude, location.coordinate.latitude)
            self.longitude = location.coordinate.longitude
            self.latitude = location.coordinate.latitude
        }
    }

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        let alertController = UIAlertController(title: "Location Error", message: error.localizedDescription, preferredStyle: .alert)
        let okayAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
        alertController.addAction(okayAction)
        self.present(alertController, animated: true, completion: nil)
    }

    func createMap(_ longitude: Double, _ latitude: Double){
        let position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
        let marker = GMSMarker(position: position)
        let camera = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: 12.0)
        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
        marker.map = mapView
        marker.title = "Your Position"
        mapView.addSubview(cameraButton)
        mapView.addSubview(menuButton)

        view = mapView

        let location = CLLocation(latitude: latitude, longitude: longitude)

        // Geocode Location
        geocoder.reverseGeocodeLocation(location) { (placemarks, error) in
            // Process Response
            print(placemarks as Any)
        }

    }
}

1 个答案:

答案 0 :(得分:0)

您正在MapView内添加MenuView和按钮,而不是在地图视图的顶部。 MenuView是Mapview的子视图,这就是为什么它不显示