我在其中一个页面上进行了以下设置:
当前页面显示带有谷歌地图的mapView,我假装在地图视图顶部显示UIView ...我已尝试过任何东西,但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)
}
}
}
您正在MapView中添加MenuView和按钮,而不是在地图视图中添加顶部。 MenuView是Mapview的子视图,这就是它没有显示的原因