2015-10-26 22 views
7

Ho appena aggiornato a Xcode 7.1. Quando provo ad impostare mapType di GMSMapView ottengo l'errore Uso ambiguo di "kGMSTypeNormal", uso ambiguo di "kGMSTypeTerrain" e uso ambiguo di "kGMSTypeHybrid".Google Maps uso ambiguo di un GMSMapViewType

@IBOutlet weak var mapView: GMSMapView! 

func myfunc() { 
     if let myMapType = NSUserDefaults.standardUserDefaults().stringForKey(SettingsTableViewController.History.MapType) { 
      switch myMapType { 
      case "kGMSTypeNormal": 
       mapView.mapType = kGMSTypeNormal 
      case "kGMSTypeTerrain": 
       mapView.mapType = kGMSTypeTerrain 
      case "kGMSTypeHybrid": 
       mapView.mapType = kGMSTypeHybrid 
      default: break 
       mapView.mapType = kGMSTypeNormal 
      } 
     } else { 
      mapView.mapType = kGMSTypeNormal 
     } 
} 

risposta

12

Non sono sicuro del motivo, ma di inserire "Google Maps". di fronte a tutti i kGMSTypes (ad esempio GoogleMaps.kGMSTypeNormal) ha risolto il problema.

+0

Risolto il problema. –

+0

Sospetto che ciò accada perché le enumerazioni sono duplicate in alcuni framework e quando si utilizza GoogleMaps.kGMS ... si fa riferimento alla costante usando il suo identificatore assoluto e inconfondibile. Qualsiasi modo - questo funziona. – Greg

0

Se si apre GMSMapViewType, lo si vedrà definito come enum. Nella tua dichiarazione switch, la stai confrontando con stringhe che sono sbagliate. Dovresti confrontarli meglio con i numeri interi.

kGMSTypeNormal = 1 
kGMSTypeSatellite = 2 
kGMSTypeTerrain = 3 
kGMSTypeHybrid = 4 
kGMSTypeNone = 5 
+0

Facendo 'lasciare myMapType = NSUserDefaults.standardUserDefaults() integerForKey (SettingsTableViewController.. History.MapType) if myMapType == 1 { mapView.mapType = kGMSTypeNormal } 'mi dà ancora lo stesso errore. In effetti, non sono in grado di definire mapType in nessuna parte della classe in quanto appare ambiguo. – wxcoder

+0

let myMapType = NSUserDefaults.standardUserDefaults(). IntegerForKey (SettingsTableViewController. History.MapType). Che valore ottieni su myMapType? –

+0

È un Int. Xcode si lamenta di questo al momento della compilazione. – wxcoder

0

è necessario utilizzare come questo

mapView.mapType = GoogleMaps.kGMSTypeSatellite

2
mapView.mapType = GMSMapViewType(rawValue: 1)! 
  • kGMSTypeNormal = 1
  • kGMSTypeSatellite = 2
  • kGMSTypeTerrain = 3
  • kGMSTypeHybrid = 4
  • KGM STypeNone = 5
0

In Swift 3 uso come muggito:

.normal .hybrid .satellite .terrain

1

qui è la versione aggiornata

import UIKit  
import GoogleMaps 

class ViewController: UIViewController, GMSMapViewDelegate { 
    var mapView: GMSMapView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     mapView = GMSMapView(frame: self.view.bounds) 
     mapView.animate(toViewingAngle: 45) 
     mapView.mapType = GMSMapViewType.satellite 
     self.view = mapView 


    }