斯威夫特 - 谷歌地图崩溃并出现'unexpectedly found nil'错误



我正在尝试为UIView设置GoogleMap并将其添加为子视图。但是,在运行应用程序时,我收到此错误:

致命错误:解开可选值时意外发现 nil

它在代码行崩溃:

mapView.camera = camera

这是我的完整视图控制器代码:

class LocationViewController: UIViewController {
@IBOutlet weak var mapView: GMSMapView!
override func viewDidLoad() {
super.viewDidLoad()
let camera = GMSCameraPosition.camera(withLatitude: 15.4989, longitude: 73.8278, zoom: 6)
mapView.camera = camera
mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
mapView.isMyLocationEnabled = true
mapView.settings.myLocationButton = true
self.view.addSubview(self.mapView)
}
}

我浏览了其他一些类似的 SO 线程,它们都具有相同的代码。就我而言,UI 冻结并崩溃并出现此错误。我做错了什么?

编辑

是的,我已将 UIView 的自定义类设置为GMSMapView

你能使用以下代码并尝试一下:

override func viewDidLoad() {
super.viewDidLoad()
let camera = GMSCameraPosition.camera(withLatitude: 15.4989, longitude: 73.8278, zoom: 6)
mapView.camera = camera
mapView.isMyLocationEnabled = true
mapView.settings.myLocationButton = true
self.view.addSubview(self.mapView)
}

你必须这样做

你必须给框架GMSMapview
在此行中self.view.bounds,您必须设置自定义view

let camera = GMSCameraPosition.camera(withLatitude: 15.4989,
longitude:  73.8278,
zoom: 6)
let mapView = GMSMapView.map(withFrame: self.view.bounds, camera: camera)

这是 swift 3.0 中的语法

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{
print(locations)
mapview.delegate = self
currentLocation =     CLLocationCoordinate2D(latitude:CLLocationDegrees(locations[0].coordinate.latitude), longitude:CLLocationDegrees(locations[0].coordinate.longitude))
mapview.camera = GMSCameraPosition.camera(withTarget:locations[0].coordinate, zoom: 10.0)
mapview.isMyLocationEnabled = true
}

相关内容

最新更新