Искать поблизости на картах iOS

Я пытаюсь создать простое приложение с использованием MapKit, которое будет автоматически искать определенное место при запуске приложения и ставить булавки на карту в этом месте (ах). Я вижу всевозможные способы загрузки местоположений (широта / долгота и т. Д.), Но ничего, что позволяло бы мне искать конкретное название компании, название ресторана и т. Д.

Я рассчитываю работать с Apple Maps. Однако, если Google Maps было бы лучшим решением, чем так и должно быть.

Любая помощь будет оценена. Спасибо


person brainnews    schedule 05.06.2013    source источник
comment
Поделитесь образцами кода того, что вы пробовали, чтобы мы могли вам помочь. Спасибо!   -  person bcr    schedule 05.06.2013


Ответы (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
}];
person Sanjit Saluja    schedule 05.06.2013

Я знаю, что уже поздно, но надеюсь, что это поможет!

[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];
        }
}];

}

person jamalkhattab    schedule 27.05.2014

Чтобы отобразить ближайшие места, выполните следующие действия.

Используя API Google, найдите ближайшие места API Google Адресов

API Google предоставляет информацию о LAt, Long и адресах.

Затем сохраните значения LAt и Long в массиве, а затем, используя эти значения lat и long, вы можете отображать аннотации на карте Apple (iOS 6+) и Google Map (iOS 5).

person Community    schedule 05.06.2013
comment
Начиная с iOS6 Это запрещено в соответствии с УО для Google Адресов. В нем говорится, что вы должны использовать карту Google, если вы показываете результаты Google Адресов. - person ilmiacs; 09.04.2014
comment
Исходный вопрос был задан о MapKit, а не о сторонней службе. Ответ Санджита ниже - правильный ответ. - person thefaj; 16.04.2014