Lendo os dados do GPS da imagem retornada pela câmera no iPhone do iOS

Preciso obter as coordenadas de GPS de uma imagem tirada com a câmera do dispositivo iOS. Eu não me importo com as imagens do rolo da câmera, apenas a imagem tirada com UIImagePickerControllerSourceTypeCamera.

Eu li muitas respostas do stackoverflow, comoObter dados Exif da UIImage - UIImagePickerController, que pressupõe que você está usando a estrutura AssetsLibrary, que parece não funcionar nas imagens da câmera, ou usa o CoreLocaiton para obter a latitude / longitude do próprio aplicativo, não da imagem.

Usando CoreLocationnão é uma opção. Isso não me dará as coordenadas quando o botão do obturador foi pressionado. (Com as soluções baseadas em CoreLocation, você precisa registrar as coordenadas antes de exibir a câmera ou depois, e, claro, se o dispositivo estiver se movendo, as coordenadas estarão erradas. Esse método deve funcionar com um dispositivo estacionário.)

Sou apenas iOS5, por isso não preciso de suportar dispositivos mais antigos. Isso também é para um produto comercial, então não posso usarhttp://code.google.com/p/iphone-exif/.

Então, quais são as minhas opções para ler os dados do GPS da imagem retornada pela câmera no iOS5? Tudo o que posso pensar agora é salvar a imagem no Camera Roll e depois usar a AssetsLibrary, mas isso parece absurdo.

Obrigado!

Aqui está o código que eu escrevi baseado na resposta do Caleb.

<code>    UIImage *image =  [info objectForKey:UIImagePickerControllerOriginalImage];

    NSData *jpeg = UIImageJPEGRepresentation(image,1.0);
    CGImageSourceRef  source ;
    source = CGImageSourceCreateWithData((__bridge CFDataRef)jpeg, NULL);

    NSDictionary *metadataNew = (__bridge NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL);  

    NSLog(@"%@",metadataNew);
</code>

e meu console mostra:

<code>    2012-04-26 14:15:37:137 ferret[2060:1799] {
        ColorModel = RGB;
        Depth = 8;
        Orientation = 6;
        PixelHeight = 1936;
        PixelWidth = 2592;
        "{Exif}" =     {
            ColorSpace = 1;
            PixelXDimension = 2592;
            PixelYDimension = 1936;
        };
        "{JFIF}" =     {
            DensityUnit = 0;
            JFIFVersion =         (
                1,
                1
            );
            XDensity = 1;
            YDensity = 1;
        };
        "{TIFF}" =     {
            Orientation = 6;
        };
    }
</code>

Sem latitude / longitude

questionAnswers(9)

yourAnswerToTheQuestion