iOSデバイスのカメラで撮影した画像のGPS座標を取得する必要があります。カメラロールの画像は気にせず、UIImagePickerControllerSourceTypeCameraで撮影した画像だけを気にします。
UIImageからExifデータを取得するなど、多くのスタックオーバーフローの回答を読みました-UIImagePickerControllerは、カメラ画像では機能しないように見えるAssetsLibraryフレームワークを使用していることを前提としているか、CoreLocaitonを使用してアプリから緯度/経度を取得します画像からではなく、それ自体。
CoreLocationの使用はオプションではありません。シャッターボタンを押したときの座標はわかりません。(CoreLocationベースのソリューションでは、カメラビューを表示する前または後に座標を記録する必要があります。もちろん、デバイスが移動している場合、座標は間違っています。この方法は、静止したデバイスで機能するはずです。)
私はiOS5のみなので、古いデバイスをサポートする必要はありません。これも商用製品用なので、http://code.google.com/p/iphone-exif/は使用できません。
では、iOS5のカメラから返された画像からGPSデータを読み取るための私のオプションは何ですか?今私が考えることができるのは、画像をCamera Rollに保存してから、AssetsLibraryを使用することだけですが、それはおかしなことに思えます。
ありがとう!
これが私がカレブの答えに基づいて書いたコードです。
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);
そして私のコンソールは示しています:
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;
};
}
緯度/経度はありません。