2015-06-15 3 views
1

В некоторых случаях я не получил правильных результатов для форвардного геокодирования. Когда я ищу некоторые места или гостиницу, он показывает результат некоторых других мест или районов. У меня есть следующий код. Я изучаю следующие link. Какой url я должен разместить, чтобы получить правильные результаты.Вперед геокодирование не дает правильных результатов

как мы можем реализовать следующие приведены в следующем сайте

https://developers.google.com/places/webservice/autocomplete

Запрос на поиск адресов, содержащих «Vict» с результатами на французском языке:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=geocode&language=fr&key=API_KEY Запрос на городах, содержащих " Vict "с результатами в Бразилии Португальский:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=(cities)&language=pt_BR&key=API_KEY

я реализовал следующие, но это не дает результатов, как я аспектированы

- (CLLocationCoordinate2D)addressLocation{ 
    NSError *error = nil; 

     // NSString *lookUpString = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?address=%@&sensor=true", SearchtextField]; 
     // NSString *[email protected]"AIzaSyB27SkGBzvEYKcxvZ5nmOVWvrA-6Xqf-7A"; 
     NSString *[email protected]"AIzaSyCHcqJcqZbP1XpU-WB4VfRct5hpdgqisSY"; 
     NSString *lookUpString = [NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/geocode/json?address=%@&region=np&key=%@", SearchtextField,API_KEY]; 



     lookUpString = [lookUpString stringByReplacingOccurrencesOfString:@" " withString:@"+"]; 

     NSData *jsonResponse = [NSData dataWithContentsOfURL:[NSURL URLWithString:lookUpString]]; 

     NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonResponse options:kNilOptions error:&error]; 
     NSArray *locationArray = [[[jsonDict valueForKey:@"results"] valueForKey:@"geometry"] valueForKey:@"location"]; 


     NSString *statusString = [jsonDict valueForKey:@"status"]; 

      if ([statusString isEqualToString:@"OK"]) 
     { 
       locationArray = [locationArray objectAtIndex:0]; 

       Str_Latitude= [locationArray valueForKey:@"lat"]; 
       Str_Longitude= [locationArray valueForKey:@"lng"]; 

       NSLog(@"LatitudeString:%@ & LongitudeString:%@", Str_Latitude, Str_Longitude); 
       /*Google place latitude Longitude*/ 
       Arr_LatLong = @[Str_Latitude,Str_Longitude]; 

       [[NSUserDefaults standardUserDefaults] setValue:Str_Latitude forKey:@"Str_Latitude"]; 
       [[NSUserDefaults standardUserDefaults] setValue:Str_Longitude forKey:@"Str_Longitude"]; 
       [[NSUserDefaults standardUserDefaults] synchronize]; 

       GogLatitude = [Str_Latitude doubleValue]; 
       Goglongitude = [Str_Longitude doubleValue]; 

       if (Bool_SearchField) { 
        [self getGoogleAddress]; 
        Bool_SearchField=FALSE; 
       }else{ 

       } 


     }else{ 

       UIAlertView *alertview =[[UIAlertView alloc] initWithTitle:@"Address not found" message:@"make sure you enter a valid address" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
        [alertview show]; 

        NSLog(@"Something went wrong, couldn't find address"); 
        [self.tableView reloadData]; 
      } 

     GogLocation.latitude = GogLatitude; 
     GogLocation.longitude = Goglongitude; 

     return GogLocation; 
    } 

Когда я искать radission в maps.google.com он показывает, как показано ниже

enter image description here

Но когда я искать в моем приложении она показывает различные места, то, что я ищу enter image description here

+0

Похоже, что есть некоторая автокоррекция на Картах Google. Означает ли этот фрагмент правильный результат, когда у вас есть правильное написание? – kaho

+0

он просто дает место, но не то, что я получаю. что URL-адрес, чтобы использовать авто правильно, может, пожалуйста, помогите мне –

ответ

1

Вы можете взять использование Region Biasing, который according to wiki, должен быть NP. Поэтому добавьте &region=np в конце вашего запроса.

Или вы можете использовать Viewport Biasing, чтобы задать границы ваших поисков.

+0

Я попробовал это, но он не работает] –

1

Я сделал то, что вы попросили в одном из моих приложений, но URL-адрес другой.

Я отправляю функцию, которая вызывается каждый раз, когда я ввожу что-то в текстовое поле.

-(void) startAutocomplete{ 
    NSString* baseUrl = [NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=%@&key=AIzaSyDz3HAmNY8NsgIhtA8gtbH-QA08Lg9tej4&types=all", self.locationTextfield.text]; 

    NSURL *url = [NSURL URLWithString:[baseUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    NSLog(@"Url: %@", url); 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 

     if (connectionError!=nil) { 
      [[[UIAlertView alloc] initWithTitle:nil message:connectionError.localizedDescription delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] show ] ; 
     }else{ 
      NSError *error = nil; 
      self.searchResult= [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 

      //NSLog(@"result:%@",self.searchResult); 
      [self.tableView reloadData]; 
     } 

    }]; 
} 
+0

спасибо, брату, я попробую это –

+0

это намного лучше, чем то, что я реализую, может дать мне некоторое представление о том, где я мог бы разместить <& components = country: np>, поэтому отображаются только результаты из Непала –

+0

Я думаю, что вы можете просто добавить & components = country: np в конце вышеуказанного URL-адреса. –

Смежные вопросы