2013-10-22 109 views
2

在過去幾天裏,我一直在努力讓Google Places自動完成功能在我的應用上運行,無論我做什麼,我總是得到REQUEST_DENIED錯誤。iOS上的Google Places API自動完成功能

我跟着谷歌的「教程」實施,啓用Places API,API密鑰有正確的包ID,我也用瀏覽器ID測試過,但沒有成功。不過,我很確定它與密鑰有關。奇怪的是,在Android版本的應用程序中,該服務將與瀏覽器密鑰一起工作。顯然,在瀏覽器上,它也可以使用該鍵。

這是兩個鍵我有嘗試:

Google APIs Console

,這是我實現代碼,使用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。

回答

2

我明白了!

的paramenter sensor應該接受或@"true"@"false",而不是@(true)@(false)

爲了記錄,使用的API密鑰確實是瀏覽器密鑰,而不是iOS密鑰。

1

您應該初始化爲httpClient,並使用基本URL @"https://maps.googleapis.com/"並獲取路徑/maps/api/place/autocomplete/json。基本網址 - 僅限主機,它不佔用路徑的其他部分,因此在您的情況下,您會收到URL「https://maps.googleapis.com/json」的請求。

+0

這是一個好建議遵循的,但它並沒有解決我的問題。我仍然得到'REQUEST_DENIED'。用兩把鑰匙再試一次。 – Guilherme

相關問題