2015-10-26 14 views
7

Ich habe gerade auf Xcode 7.1 aktualisiert. Wenn ich versuche, den mapType einer GMSMapView zu setzen, erhalte ich den Fehler Mehrdeutige Verwendung von 'kGMSTypeNormal', mehrdeutige Verwendung von 'kGMSTypeTerrain' und mehrdeutige Verwendung von 'kGMSTypeHybrid'.Google Maps mehrdeutige Verwendung eines 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 
     } 
} 

Antwort

12

Ich bin mir nicht sicher warum, aber setzen "GoogleMaps." Vor allen kGMSTypes (d. h. GoogleMaps.kGMSTypeNormal) wurde das Problem behoben.

+0

löste mein Problem. –

+0

Ich vermute, dass dies passiert, weil die Enums in einigen Frameworks dupliziert werden und wenn Sie GoogleMaps.kGMS verwenden ... verweisen Sie die Konstante mit ihrer absoluten und unverwechselbaren Kennung. Irgendwie - das funktioniert. – Greg

0

Wenn Sie GMSMapViewType öffnen, wird es als Enum definiert. In Ihrer switch-Anweisung vergleichen Sie sie mit Strings, die falsch sind. Sie sollten sie besser mit ganzen Zahlen vergleichen.

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

Doing 'lassen myMapType = NSUserDefaults.standardUserDefaults() integerForKey (SettingsTableViewController.. History.MapType) wenn myMapType == 1 { mapView.mapType = kGMSTypeNormal } 'gibt mir immer noch den gleichen Fehler. In der Tat kann ich den mapType nirgends in der Klasse definieren, da er einfach mehrdeutig ist. – wxcoder

+0

Lassen Sie myMapType = NSUserDefaults.standardUserDefaults(). IntegerForKey (SettingsTableViewController.History.MapType). Welchen Wert erhalten Sie bei myMapType? –

+0

Es ist ein Int. Xcode beschwert sich zur Kompilierzeit darüber. – wxcoder

0

Sie müssen wie dieses

mapView.mapType = GoogleMaps.kGMSTypeSatellite

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

In Swift 3 Verwendung als Gebrüll:

.normal .hybrid .satellite .terrain

1

hier ist die aktualisierte Version

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 


    }