2015-10-26 23 views
7

Właśnie zaktualizowałem Xcode 7.1. Kiedy próbuję ustawić mapType GMSMapView otrzymuję błąd Niejednoznaczne użycie "kGMSTypeNormal", Niejednoznaczne użycie "kGMSTypeTerrain" i Niejednoznaczne użycie "kGMSTypeHybrid".Google Maps niejednoznaczne użycie 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 
     } 
} 

Odpowiedz

12

Nie jestem pewien dlaczego, ale "GoogleMaps". przed wszystkimi kGMSTypes (tj. GoogleMaps.kGMSTypeNormal) naprawił problem.

+0

Rozwiązałem mój problem. –

+0

Podejrzewam, że tak się dzieje, ponieważ wyliczenia są duplikowane w niektórych frameworkach i podczas korzystania z GoogleMaps.kGMS ... odwołujesz się do stałej używając jej bezwzględnego i niepowtarzalnego identyfikatora. W każdy sposób - to działa. – Greg

0

Jeśli otworzysz GMSMapViewType, zobaczysz go zdefiniowany jako enum. W instrukcji switch porównujesz ją z ciągami, które są błędne. Powinieneś lepiej porównać je z liczbami całkowitymi.

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

Doing: Niech myMapType = NSUserDefaults.standardUserDefaults() integerForKey (SettingsTableViewController.. History.MapType) if myMapType == 1 { mapView.mapType = kGMSTypeNormal } 'nadal daje mi ten sam błąd. W rzeczywistości nie jestem w stanie zdefiniować obiektu mapType w dowolnym miejscu w klasie, ponieważ jest on niejednoznaczny. – wxcoder

+0

let myMapType = NSUserDefaults.standardUserDefaults(). IntegerForKey (SettingsTableViewController. History.MapType). Jaką wartość otrzymujesz na myMapType? –

+0

To jest Int. Xcode narzeka na to podczas kompilacji. – wxcoder

0

trzeba użyć jak to

mapView.mapType = GoogleMaps.kGMSTypeSatellite

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

W Swift 3 stosowania jako ryk:

.normal .hybrid .satellite .terrain

1

tutaj jest zaktualizowana wersja

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 


    }