例外情况:在使用之前,Google Maps SDK for iOS必须通过进行初始化

我正在尝试使用Swift 2.0将Google Maps SDK实现到我的项目中。 我遵循这个,但是当运行这个,我的应用程序正在收到以下错误:

2015-08-25 19:05:17.337 googleMap[1919:54102] *** Terminating app due to uncaught exception 'GMSServicesException', reason: 'Google Maps SDK for iOS must be initialized via [GMSServices provideAPIKey:...] prior to use *** First throw call stack: ( 0 CoreFoundation 0x00000001058499b5 __exceptionPreprocess + 165 ... ... ... 31 UIKit 0x000000010606699e UIApplicationMain + 171 32 googleMap 0x00000001034b720d main + 109 33 libdyld.dylib 0x0000000107fba92d start + 1 34 ??? 0x0000000000000001 0x0 + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException 

我已经尝试了所有可能的解决scheme从StackOverflow。

你需要在didFinishLaunchingWithOptions中设置这个

 GMSPlacesClient.provideAPIKey("Your key") GMSServices.provideAPIKey("Your key") 

只需添加到Rajasekaran Gopal

请记住添加

 import GoogleMaps import GooglePlaces 

然后

 GMSPlacesClient.provideAPIKey("Your key") GMSServices.provideAPIKey("Your key") 

在didFinishLaunchingWithOptions

这是一个Swift的Google Maps教程:

http://www.appcoda.com/google-maps-api-tutorial/

以下是Google地图文档引用的内容:

第5步:获取iOS API密钥

使用API​​密钥可以监视应用程序的API使用情况,并确保Google可以在必要时与您联系。 关键是免费的,您可以将它与任何调用Google Maps SDK for iOS的应用程序一起使用,并且支持无限数量的用户。 您可以通过提供应用程序的包标识符从Google Developers Console获取API密钥。

如果您的项目还没有iOS应用程序的密钥,请按照以下步骤从Google Developers Console创buildAPI密钥:

  1. 在左边的边栏中,select凭证
  2. 如果您的项目还没有iOS API密钥,请通过select添加凭证> API密钥> iOS密钥来创build一个。
  3. 在出现的对话框中,input您的应用程序的包标识符。 例如: com.example.hellomap
  4. 点击创build

    您的新iOS API密钥将显示在您项目的API密钥列表中。 API密钥是一串字符,如下所示:

    AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0

  5. 将您的API密钥添加到您的AppDelegate.m ,如下所示:

    • 添加以下导入语句:

    @import GoogleMaps;

    • 将以下内容添加到您的应用程序中:didFinishLaunchingWithOptions:方法,用您的API密钥replaceAPI_KEY:

    [GMSServices provideAPIKey:@"API_KEY"];

资源

我只是有同样的问题。 我创build了一个GMSMapView对象,并且在可能读取api键之前进行了初始化。 所以我把它移到viewDidLoad方法里面,问题就解决了。

之前:

 class ViewController: ..... { let mapView = GMSMapView() 

之后:

 class ViewController: ..... { var mapView : GMSMapView? override viewDidLoad(){ mapView = GMSMapView() 

如果您已经在界面构build器中将GMSMapView类设置为您的视图,请在包含GMSMapView的viewController的初始化方法中创buildGMSServices.provideAPIKey("API key")