Поиск поблизости в iOS Maps
Я пытаюсь создать простое приложение с использованием MapKit, которое будет автоматически искать определенное место при запуске приложения и вставлять булавки на карту в местах. Я вижу все виды способов загрузки мест (широта / долгота и т. Д.), Но нет ничего, что позволяло бы мне искать определенное название компании, название ресторана и т. Д.
Я ожидаю работы с Apple Maps. Однако, если Google Maps будет лучше решить, чем так будет.
Любая помощь будет оценена. Спасибо
3 ответа
iOS >= 6.1 предоставляет MKLocalSearch, MKLocalSearchRequest для поиска точек интереса на естественном языке. Образец
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.region = regionToSearchIn;
request.naturalLanguageQuery = @"restaurants"; // or business name
MKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:request];
[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
// do something with the results / error
}];
Я знаю, что уже поздно, но надеюсь, это поможет!
[super viewDidLoad];
[self.searchDisplayController setDelegate:self];
[self.ibSearchBar setDelegate:self];
self.ibMapView.delegate=self;
// Zoom the map to current location.
[self.ibMapView setShowsUserLocation:YES];
[self.ibMapView setUserInteractionEnabled:YES];
[self.ibMapView setUserTrackingMode:MKUserTrackingModeFollow];
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate=self;
[locationManager startUpdatingLocation];
[self.ibMapView setRegion:MKCoordinateRegionMake(locationManager.location.coordinate, MKCoordinateSpanMake(0.2, 0.2))];
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.region = self.ibMapView.region;
request.naturalLanguageQuery = @"restaurant";
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
localSearch = [[MKLocalSearch alloc] initWithRequest:request];
[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error){
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
results = response;
if (response.mapItems.count == 0)
NSLog(@"No Matches");
else
for (MKMapItem *item in response.mapItems)
{
NSLog(@"name = %@", item.name);
NSLog(@"Phone = %@", item.phoneNumber);
[_matchingItems addObject:item];
MKPointAnnotation *annotation =
[[MKPointAnnotation alloc]init];
annotation.coordinate = item.placemark.coordinate;
annotation.title = item.name;
[self.ibMapView addAnnotation:annotation];
}
}];
}
Выполните следующие шаги для отображения ближайших мест.
С помощью Google API найдите API Google Мест на карте
API Google предоставляет LAt и Long и адресную информацию.
Затем сохраните LAt и Long Values в Array, затем, используя эти значения lat и long, вы можете отобразить аннотации на карте Apple (iOS 6+) и Google Map (iOS 5).