Chcę umożliwić użytkownikom wyszukanie nazwy ulicy i wyświetlenie wyników w widoku UITableView. Na razie region nie jest ważny, może pochodzić z dowolnego regionu.Objective-C - Wyszukiwanie ulic na podstawie wprowadzonego przez użytkownika zapytania
Nie mogłem znaleźć żadnego istotnego przykładu w moich wyszukiwaniach i nie wiem, czy powinienem użyć CLLocation lub MKLocalSearch.
podstawie Dokumentów, należy użyć MKLocalSearch:
Chociaż wyszukiwanie lokalne i geokodowanie są podobne, wspierają one różne przypadki użycia. Użyj geokodowania, aby przekonwertować między współrzędnymi mapy i adresem strukturalnym, takim jak adres książki adresowej Adres: . Użyj wyszukiwania lokalnego, jeśli chcesz znaleźć zestaw lokalizacji pasujących do danych wprowadzonych przez użytkownika.
Ale Próbowałem obu sposobów i to daje mi tylko 1 wynik (nawet chociaż istnieje NSArray powrócił
To podejście CLGeocoder.
CLGeocoder *geocoding = [[CLGeocoder alloc] init];
[geocoding geocodeAddressString:theTextField.text completionHandler:^(NSArray *placemarks, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSLog(@"%i", [placemarks count]);
for(CLPlacemark *myStr in placemarks) {
NSLog(@"%@", myStr);
}
}
}];
i to jest mój MKLocalSearch spróbować:
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = theTextField.text;
request.region = self.region;
localSearch = [[MKLocalSearch alloc] initWithRequest:request];
[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error){
if (error != nil) {
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Map Error",nil)
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil] show];
return;
}
if ([response.mapItems count] == 0) {
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"No Results",nil)
message:nil
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil] show];
return;
}
self.streets = response;
[self.streetsTableView reloadData];
}];
MKLocalSearch wydaje się powrót więcej niż 1 odpowiedź w niektórych przypadkach, ale są one związane z PLA nie szuka nazw ulic.
Z góry dziękuję.
Czy próbowałeś ustawić region na zero? lub możesz udostępnić więcej szczegółów na temat self.region? –
Mam MapView i używam MapView.region jako self.region – CristiC
z mojego doświadczenia MKLocalSearch jest bardzo prymitywne. Czy byłbyś przeciwny używaniu interfejsu Google Places API z dowolnego powodu? –