Places API库中发生内部错误

时间:2016-10-13 10:34:24

标签: google-maps maps cocoapods google-places-api google-places

我正在使用GoogleMaps和GooglePlaces API,但我总是得到同样的错误。

“操作无法完成。Places API库中发生内部错误。如果您认为此错误代表错误,请使用我们社区和支持页面上的说明提交报告(https://developers.google.com/places/support )“

我尝试运行pod尝试GoogleMaps,当我启动de project任何地图加载时,只有一个tableView具有不同的选项。

这是我的代码,我只想获取用户位置:

-(IBAction)getCurrentPlace:(UIButton *)sender {
[placesClient currentPlaceWithCallback:^(GMSPlaceLikelihoodList *placeLikelihoodList, NSError *error){
    if (error != nil) {
        NSLog(@"Pick Place error %@", [error localizedDescription]);
        return;
    }

    self.nameLabel.text = @"No current place";
    self.addressLabel.text = @"";

    if (placeLikelihoodList != nil) {
        GMSPlace *place = [[[placeLikelihoodList likelihoods] firstObject] place];
        if (place != nil) {
            self.nameLabel.text = place.name;
            self.addressLabel.text = [[place.formattedAddress componentsSeparatedByString:@", "]
                                      componentsJoinedByString:@"\n"];
        }
    }
}];
}

我在didFinishLaunchingWithOptions

中导入了mi APIKEY
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[GMSServices provideAPIKey:@"MY_APIKEY"];

return YES;
}

这是我的Podfile

platform :ios, '7.0'
source 'https://github.com/CocoaPods/Specs.git'

target ‘googlePlace’ do

   pod 'GoogleMaps'
   pod 'GooglePlaces'

end

最后,我的apikey已配置为Google控制台中的iOS应用程序。

有什么问题?

4 个答案:

答案 0 :(得分:4)

这似乎是您的API密钥无效或超出配额。

您可以检查是否将正确的API密钥传递给GM​​SPlacesClient.provideAPIKey(_ :)。

如果您确定要传递正确的API密钥,请检查Google API控制台(https://console.developers.google.com/),以确保您没有超出每日配额限制。

可以在此处跟踪此问题:https://issuetracker.google.com/issues/35830792

答案 1 :(得分:2)

回答我自己的问题

https://developers.google.com/places/migrate-to-v2?hl=es-419

这解决了问题

迁移到Google Places API for iOS,版本2

借助适用于iOS的Google Maps SDK版本,Google Maps API for iOS已从Google Maps SDK for iOS中拆分,现在作为单独的CocoaPod发布。

按照以下步骤更新现有应用:

更新您的Podfile以引用除GoogleMaps CocoaPod之外的GooglePlaces CocoaPod。如果您未使用适用于iOS的Google Maps SDK,则可以删除GoogleMaps。

如果您使用的是地方选择器,请更新您的Podfile以引用除GooglePlaces之外的GooglePlacePicker CocoaPod。

在您使用Places API的所有导入中将GoogleMaps重命名为GooglePlaces。

使用GMSPlacesClient.provideAPIKey( :)而不是GMSServices.provideAPIKey( :)来指定您的API密钥。

如果您使用的是适用于iOS的Google Maps SDK或场地选择器,请使用GMSPlacesClient.openSourceLicenseInfo()以及GMSServices.openSourceLicenseInfo()获取所需的开源许可证文本。

答案 2 :(得分:0)

经过8到12个小时的研发后,发现以下解决方案。我相信它会起作用。

只需将密钥添加到AppDelegate.swift文件中,而不添加任何其他类。它将解决您的问题。

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
         GMSPlacesClient.provideAPIKey("KEY")
         GMSServices.provideAPIKey("KEY")

    }

注意:必须在AppDelegate中初始化GMSPlacesClient,因为初始化会花费一些时间。

答案 3 :(得分:0)

2018年的答案,在我的新工作中,我们对此感到很困难。我自己的位置密钥有效,但我新公司的位置密钥无效。几个小时后,我记得自己设置自己的密钥的时候,我必须刷新或重新生成Places API的 ,然后才能使用它。现在回到我现在的情况,我告诉同事和繁荣,我们只需要刷新密钥就可以了! :)