我正在使用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应用程序。
有什么问题?
答案 0 :(得分:4)
这似乎是您的API密钥无效或超出配额。
您可以检查是否将正确的API密钥传递给GMSPlacesClient.provideAPIKey(_ :)。
如果您确定要传递正确的API密钥,请检查Google API控制台(https://console.developers.google.com/),以确保您没有超出每日配额限制。
答案 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的 ,然后才能使用它。现在回到我现在的情况,我告诉同事和繁荣,我们只需要刷新密钥就可以了! :)