2016-06-14 49 views
4

我無法讓Google地圖居中並在它作爲IBOutlet連接的子視圖中添加標記。我試圖讓它工作,感覺像20種不同的方式,但我堅持,所以將不勝感激任何幫助或指導。使用Google地圖SDK中心地圖和添加標記子視圖(Swift)

代碼的設置是相當簡單如下:

//Map view outlet 
@IBOutlet weak var googleMapView: GMSMapView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

// Google Map View Setup 
    let camera = GMSCameraPosition.cameraWithLatitude(-33.86, longitude: 151.20, zoom: 6) 
    let mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera) 
    mapView.myLocationEnabled = true 

    self.googleMapView = mapView 

    let marker = GMSMarker() 
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20) 
    marker.title = "Sydney" 
    marker.snippet = "Australia" 
    marker.map = mapView 

我可以得到它如果視圖是通過改變self.googleMapView到self.view整個視圖控制器工作,但我想不通了解如何正確連接到googleMapView插座。謝謝!

我試過使用這個similar question給出的幫助,但它沒有明確的答案,因爲出口和變量都mapView和我無法得到它的工作。

回答

8

當然,當我在這裏向所有人問這個問題之後,我有了一個頓悟並想通了!我不需要創建一個新的GMSMapView,因爲這已經通過自動佈局完成了。我只需要訪問該GMSMapView插座的相機變量來設置位置。下面

代碼:

// Google Map View Setup 
    let camera = GMSCameraPosition.cameraWithLatitude(-33.86, longitude: 151.20, zoom: 6) 
    self.googleMapView.myLocationEnabled = true 

    self.googleMapView.camera = camera 

    let marker = GMSMarker() 
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20) 
    marker.title = "Sydney" 
    marker.snippet = "Australia" 
    marker.map = googleMapView 
+0

我有同樣的問題,這讓我看到了光.. +1 –

1

我想你的MapView的界限沒有正確設置在viewDidLoad中(視圖出口)的功能。因此,您可以設置從 func viewDidAppear(animated:Bool)的mapView邊界。我曾面臨過谷歌地圖正確地集中在self.view而不是以自定義視圖邊界爲中心的問題。我們發現在func上viewDidLoad (),我們不能正確地得到視圖的矩形邊界。

override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     googleMapsView = GMSMapView() 
     googleMapsView?.frame = mapView.bounds 
     googleMapsView?.myLocationEnabled = true 
     if let googleMapView = googleMapsView { 
      mapView.addSubview(googleMapView) 
     } 
    }