2015-10-26 16 views
7

Tôi vừa nâng cấp lên Xcode 7.1. Khi tôi cố gắng thiết lập mapType của một GMSMapView tôi nhận được lỗi Sử dụng không rõ ràng của 'kGMSTypeNormal', sử dụng không rõ ràng của 'kGMSTypeTerrain', và sử dụng không rõ ràng của 'kGMSTypeHybrid'.Google Maps sử dụng không rõ ràng 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 
     } 
} 

Trả lời

12

Tôi không chắc chắn lý do tại sao nhưng đặt "Google Maps". trước tất cả các kGMSTypes (tức là GoogleMaps.kGMSTypeNormal) đã khắc phục được sự cố.

+0

Giải quyết vấn đề của tôi. –

+0

Tôi nghi ngờ điều này xảy ra bởi vì các enums được nhân đôi trong một số khung công tác và khi sử dụng GoogleMaps.kGMS ... bạn đang tham chiếu hằng số bằng cách sử dụng định danh tuyệt đối và không thể nhầm lẫn của nó. Bất kỳ cách nào - điều này hoạt động. – Greg

0

Nếu bạn mở GMSMapViewType, bạn sẽ thấy nó được xác định là enum. Trong câu lệnh switch của bạn, bạn đang so sánh nó với các chuỗi sai. Bạn nên so sánh chúng với các số nguyên.

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

Làm 'để myMapType = NSUserDefaults.standardUserDefaults() integerForKey (SettingsTableViewController.. History.MapType) nếu myMapType == 1 { mapView.mapType = kGMSTypeNormal } 'vẫn cho tôi lỗi tương tự. Trong thực tế, tôi không thể xác định mapType ở bất kỳ đâu trong lớp vì nó chỉ xuất hiện như mơ hồ. – wxcoder

+0

để myMapType = NSUserDefaults.standardUserDefaults(). IntegerForKey (SettingsTableViewController.‌ History.MapType). Giá trị nào bạn nhận được trên myMapType? –

+0

Nó là một Int. Xcode phàn nàn về điều này tại thời gian biên dịch. – wxcoder

0

Bạn cần phải sử dụng như

mapView.mapType = GoogleMaps.kGMSTypeSatellite

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

Trong Swift 3 sử dụng như dưới đây:

.normal .hybrid .satellite .terrain

1

đây là phiên bản cập nhật

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 


    } 
Các vấn đề liên quan