2016-12-27 60 views
0

我想设置GoogleMapUIView并将其添加为子视图。但是,在运行应用程序时,我得到这个错误:Swift - 谷歌地图与'意外发现零'错误崩溃

fatal error: unexpectedly found nil while unwrapping an Optional value

它崩溃的代码行:

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

+0

其中线你有错误的语法? –

+0

@Jecky at'mapView.camera = camera' – Dinuka

+0

查看我的回答 –

回答

0

可否请你用下面的代码,并尝试:

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) 
    } 
+0

你做了什么改变? – Dinuka

+0

你的mapview框架 –

+0

这个代码在swift-3 bro中有点不同:/ – Dinuka

0

你必须做这样的

你必须给帧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) 
0

这是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 
}