objective-ciosuiimagepickercontrollercllocationmanagergeotagging

Getting location from meta data on iOS


Is there a way to get the location out of a newly taken image, without using the CLLocationManager?

Its kind of stupid to use a location manager if you can just extract the data out of the image.

Thanks in advance


Solution

  • Use iphone-exif: http://code.google.com/p/iphone-exif/

    #import "EXFJpeg.h"
    
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
        NSLog(@"image picked %@ with info %@", image, editingInfo);
        NSData* jpegData = UIImageJPEGRepresentation (image,0.5);
        EXFJpeg* jpegScanner = [[EXFJpeg alloc] init];
        [jpegScanner scanImageData: jpegData];
        EXFMetaData* exifData = jpegScanner.exifMetaData;
        EXFJFIF* jfif = jpegScanner.jfif;
        EXFTag* tagDefinition = [exifData tagDefinition: [NSNumber numberWithInt:EXIF_DateTime]];
        //EXFTag* latitudeDef = [exifData tagDefinition: [NSNumber numberWithInt:EXIF_GPSLatitude]];
        //EXFTag* longitudeDef = [exifData tagDefinition: [NSNumber numberWithInt:EXIF_GPSLongitude]];
        id latitudeValue = [exifData tagValue:[NSNumber numberWithInt:EXIF_GPSLatitude]];
        id longitudeValue = [exifData tagValue:[NSNumber numberWithInt:EXIF_GPSLongitude]];
        id datetime = [exifData tagValue:[NSNumber numberWithInt:EXIF_DateTime]];
        id t = [exifData tagValue:[NSNumber numberWithInt:EXIF_Model]];
    ....
    ....