Passing user location to MKMapItem

I’ve displayed user location and i want to display those fetched locations in MKMApItem.
I know the way to display in MKMapItem..But i cant pass those fetched locations to MapItem class..can u help me in passing those values

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<FBGraphUser> *friend in data) {
        NSLog(@"%@:%@", [friend name ],[friend.location objectForKey:@"name"]);

and my output is:

  • Is there a way to generate QR code image on iOS
  • Infinite UIScrollView
  • Programmatically change the height and width of a UIImageView Xcode Swift
  • Do ANCS support sending notifications to multiple BLE devices?
  • Get a Week From a Different Starting Day
  • iOS 9 CoreData / ICloud - No such document at URL
  • 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
    

    how should i pass these locations to MKMapItem class

    - (IBAction)onClick:(id)sender {
    Class mapItemClass=[MKMapItem class];
    
    if(mapItemClass &&[mapItemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)])
    {...}}
    

    Thanks in Advance..

    Solutions Collect From Internet About “Passing user location to MKMapItem”

    I answered the question of how to do multiple geocode requests in response to your other question, so I’ll refrain from repeating that narrative here.

    Bottom line, I’d just suggest that you try:

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

    and then you can tweak the answer provided in Multiple Locations on Map (using MKMapItem and 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<FBGraphUser> *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];
    }
    

    This routine is a complicated way of ensuring that the multiple geocode requests do not happen concurrently. The logic behind this is explained in greater detail Multiple Locations on Map (using MKMapItem and CLGeocoder).