在過去幾天裏,我一直在努力讓Google Places自動完成功能在我的應用上運行,無論我做什麼,我總是得到REQUEST_DENIED
錯誤。iOS上的Google Places API自動完成功能
我跟着谷歌的「教程」實施,啓用Places API,API密鑰有正確的包ID,我也用瀏覽器ID測試過,但沒有成功。不過,我很確定它與密鑰有關。奇怪的是,在Android版本的應用程序中,該服務將與瀏覽器密鑰一起工作。顯然,在瀏覽器上,它也可以使用該鍵。
這是兩個鍵我有嘗試:
,這是我實現代碼,使用AFNetworking
:
NSURL *url = [NSURL URLWithString:@"https://maps.googleapis.com/maps/api/place/autocomplete/"];
NSDictionary *params = @{@"input" : [input stringByReplacingOccurrencesOfString:@" " withString:@"+"],
@"location" : [NSString stringWithFormat:@"%f,%f", searchCoordinate.latitude, searchCoordinate.longitude],
@"sensor" : @(true),
// @"language" : @"pt_BR",
// @"types" : @"(regions)",
// @"components" : @"components=country:br",
@"key" : GOOGLE_API_KEY};
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
[httpClient setParameterEncoding:AFFormURLParameterEncoding];
[httpClient getPath:@"json"
parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *JSON = [[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil] dictionaryWithoutNulls];
if (completion) {
completion(JSON[@"predictions"]);
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *errorResponse) {
NSLog(@"[HTTPClient Error]: %@ for URL %@", [errorResponse localizedDescription], [[[operation request] URL] path]);
}];
我知道這裏有一些像這樣的問題,但有些已經過時了,並且說Places API在Android或iOS上不起作用,這顯然不再適用,因爲Google本身在兩個平臺上發佈了示例,如Places API頁面上所示:https://developers.google.com/places/documentation/autocomplete
我目前使用的解決方法是Apple的GeoCoding系統,當您輸入完整地址時效果很好,但對於半鍵式短語而言很糟糕。這並不好,我真的很喜歡使用Google的API。
這是一個好建議遵循的,但它並沒有解決我的問題。我仍然得到'REQUEST_DENIED'。用兩把鑰匙再試一次。 – Guilherme