简单的SPGooglePlacesAutocompleteQuery请求中的OVER_QUERY_LIMIT

时间:2016-10-20 04:31:00

标签: ios objective-c google-places

我正在尝试创建简单的自动填充UI小部件:

self.autocompleteQuery = [[SPGooglePlacesAutocompleteQuery alloc] initWithApiKey:[GlobalConfig sharedInstance].kGoogleBrowserKey];
self.autocompleteQuery.language = kFFAutocompleteQueryLanguage;
self.autocompleteQuery.types = SPPlaceTypeAddress;
self.autocompleteQuery.location = [FFAppDataHelper coordinatesForMoscow];
self.autocompleteQuery.radius = [GlobalConfig sharedInstance].kMoscowRadius;
self.autocompleteQuery.countryCode = @"RU";

然后我想从UITextField获取输入字符串的所有值' valueChanged'事件:

self.autocompleteQuery.input = [streetName stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[self.autocompleteQuery fetchPlaces:^(NSArray *places, NSError *error) {
    [self loaderStopAnimating];

    if (places) {
      //do some stuff
    } else {
        FFError *detectedError = [FFError errorWithNSError:error];
        [self showErrorMessage:[detectedError errorMessage]];
    }
}];

所以当我输入' k'我得到了街道的响应,如果我在文本字段中添加下一个字符,我每次都会收到OVER_QUERY_LIMIT。我已经在模拟器和设备上尝试了相同的结果。它会在10-20秒后重新开始工作。我没有使用类似的循环或smth,我只想实时获得输入字符串的建议,但由于错误我无法得到它。我该怎么办才能避免它?

1 个答案:

答案 0 :(得分:0)

对于Web服务请求,请使用密钥。

请遵循:https://developers.google.com/maps/documentation/geocoding/start#api_key

Doc说:

  

注意:Maps for Work用户必须包含客户端和签名参数及其请求而不是密钥。       所有Geocoding API应用程序都应使用API​​密钥。在您的请求中包含密钥:   允许您在Google Developers Console中监控应用程序的API使用情况。启用每个密钥而不是每个IP地址配额限制。确保Google可以在必要时就您的申请与您联系。 Geocoding API使用API​​密钥来标识您的应用程序。 API密钥通过Google API控制台进行管理。要创建密钥:   访问Google Developers Console中的API控制台,然后使用您的Google帐户登录。单击API控制台左侧菜单中的“服务”链接,然后激活地理编码API服务。激活服务后,您的API密钥可从API>获得。访问页面,在Simple API Access部分中。地理编码API应用程序使用Key for servers apps。要在请求中指定密钥,请将其包含为密钥参数的值。   注意:默认情况下,可以从任何服务器使用密钥。我们强烈建议您通过IP地址将密钥的使用限制为您管理的服务器。您可以通过单击API控制台中的“编辑允许的引用者...”链接来指定允许使用API​​密钥的IP地址。   注意:对包含API密钥的请求强制使用HTTPS。