Goutham
Goutham

Reputation: 51

google search places autocomplete specific to country in ios

I am working on Google Places AutoComplete Service where i need to filter the places specific to country and found this.

It is working good untill when i pass a parameter components=country:se to filter the autocomplete field its response is REQUEST_DENIED

NSMutableString *url = [NSMutableString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/autocomplete/json?input=%@&components=country:se&sensor=%@&key=%@",
                                                             [input stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                                                             SPBooleanStringForBool(sensor), key];

I need the autocomplete to give suggestion specific to country.

Thanks

Upvotes: 3

Views: 1476

Answers (2)

Sucharu Hasija
Sucharu Hasija

Reputation: 1126

This works fine for me. You can set this by adding the bounds for the region by adding its extreme top left and bottom right location points of the the Geographical area.

like for USA i used.

GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:CLLocationCoordinate2DMake(52.00, 148.00)
                                                                   coordinate:CLLocationCoordinate2DMake(18.00, -71.00)];

GMSPlacesClient * placesClient = [[GMSPlacesClient alloc] init];

[placesClient autocompleteQuery:fieldValue bounds:bounds filter:nil
                       callback:^(NSArray *results, NSError *error)
 {
     if (error != nil)
     {
         NSLog(@"Autocomplete error %@", [error localizedDescription]);
         return;
     }
     else
     {
         [self.autoComplete removeAllObjects];
         [self.AddressPlaceID removeAllObjects];
         for (GMSAutocompletePrediction* result in results)
         {

             CustomAddress * parseAddress = [[CustomAddress alloc] init];
             NSString * adString = [parseAddress removeCountryFromAddress:result.attributedFullText.string];

             [self.autoComplete addObject:adString];
             [self.AddressPlaceID addObject:result.placeID];

         }
         [self.autoCompleteTable reloadData];
     }
 }];

But you can still get the other location results . It will prefer first the geographical bounds you define in the GMCoordinateBounds

Upvotes: 1

Ankahathara
Ankahathara

Reputation: 2934

Why do not use the iOS SDK to obtain country specific results? Follow this answer.

Upvotes: 0

Related Questions