Мимолетное пользовательское местоположение к MKMapItem

Я имею расположение отображаемого пользователя, и я хочу показать те принесенные местоположения в MKMApItem . Я знаю способ показать в MKMapItem .. Но я не могу пройти те принесенные местоположения к классу MapItem.. может u помогать мне мимоходом те ценности

FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?field=name,location,hometown"];
[ friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error){
    NSArray *data = [result objectForKey:@"data"];

    for (FBGraphObject *friend in data) {
        NSLog(@"%@:%@", [friend name ],[friend.location objectForKey:@"name"]);

и моя продукция:

2013-01-09 17:47:57.096 istb[296:1a03] Athish:Cochin, Kerala
2013-01-09 17:47:57.096 istb[296:1a03] Anges:Mumbai
.
.
.
.
2013-01-09 17:47:57.097 istb[296:1a03] Raja:Delhi
2013-01-09 17:47:57.097 istb[296:1a03] Rajesh:Canada

как я должен пройти эти местоположения, чтобы MKMapItem класс

- (IBAction)onClick:(id)sender {
Class mapItemClass=[MKMapItem class];

if(mapItemClass &&[mapItemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)])
{...}}

Заранее спасибо..

1
nl ja de

1 ответы

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

Нижняя строка, я просто предложил бы, чтобы вы попробовали:

FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?field=name,location,hometown"];
[friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
    NSArray *friends = [result objectForKey:@"data"];
    [self geocodeFriendRequestResponse:friends];
}];

и затем можно щипнуть ответ, предоставленный в Многократные местоположения на карте (использующий MKMapItem и CLGeocoder):

- (void)geocodeFriendRequestResponse:(NSArray *)friends
{
    CLGeocoder *geocoder = [[CLGeocoder alloc]init];
    NSMutableArray *mapItems = [NSMutableArray array];

    NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    NSOperation *finalCompletionOperation = [NSBlockOperation blockOperationWithBlock:^{
        [MKMapItem openMapsWithItems:mapItems launchOptions:nil];
    }];

    NSOperation *previousCompletionHandler = nil;

    for (FBGraphObject *friend in friends)
    {
        NSString *address = [friend.location objectForKey:@"name"];

       //create a block for the geocode request itself

        NSBlockOperation *geocodeRequest = [[NSBlockOperation alloc] init];

       //make this geo request dependent upon the completion of the prior geocode request completion block

        if (previousCompletionHandler) [geocodeRequest addDependency:previousCompletionHandler];

       //create a block for the geocode request completion block

        NSBlockOperation *geocodeCompletionHandler = [[NSBlockOperation alloc] init];

       //The final `openMapsWithItems` is contingent on the completion of this geocode request completion block

        [finalCompletionOperation addDependency:geocodeCompletionHandler];

       //let's initiate the geocode request

        [geocodeRequest addExecutionBlock:^{
            [geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {

               //upon completion, we'll initiate the geocode request completion block

                [geocodeCompletionHandler addExecutionBlock:^{
                    if (error)
                        NSLog(@"%@", error);
                    else if ([placemarks count] > 0)
                    {
                        CLPlacemark *geocodedPlacemark = [placemarks objectAtIndex:0];
                        MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:geocodedPlacemark.location.coordinate
                                                                       addressDictionary:geocodedPlacemark.addressDictionary];
                        MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark];
                        [mapItem setName:geocodedPlacemark.name];

                        [mapItems addObject:mapItem];
                    }
                }];

                [queue addOperation:geocodeCompletionHandler];
            }];
        }];

        [queue addOperation:geocodeRequest];

        previousCompletionHandler = geocodeCompletionHandler;
    }

    [queue addOperation:finalCompletionOperation];
}

Этот установленный порядок - сложный способ гарантировать, чтобы многократных запросов геокода не происходило одновременно. Логика позади этого объяснена более подробно Многократные местоположения на карте (использующий MKMapItem и CLGeocoder).

3
добавлено
@Rob-thanks много..
добавлено автор Grey Code, источник
@Rob.. Большое спасибо.. это хорошо работает..
добавлено автор Grey Code, источник
@Rob-Hi Роб.. I' ve отправил u по почте для некоторых вопросов.. пожалуйста, ответьте мне для моих вопросов.. Заранее спасибо..
добавлено автор Grey Code, источник
Между прочим, в то время как I' ve проверил логику геокода, я haven' t проверил его вместе с логикой Facebook, таким образом сообщите мне, как это идет.
добавлено автор Rob, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.