iPhone のカメラで撮影し、カメラ ロールから選択した写真のジオコード位置情報 (緯度と経度) にアクセスする必要があります。まずはカメラで撮った写真を…
カメラで画像を撮影したら、次のコードを使用しています。次に、画像のメタデータを取り出して、NSMutableDictionary に保存します。しかし、辞書に GPS 情報がありません... どこにあるのですか? この情報にアクセスするにはどうすればよいですか。これに関する適切なドキュメントも見つかりません...
以下のコード:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// snip out code above to keep this question short.
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if([mediaType isEqualToString:(__bridge NSString *)kUTTypeImage])
{
// images taken with camera have direct access to the metadata by using UIImagePickerControllerMediaMetadata
NSMutableDictionary *metadata = [[NSMutableDictionary alloc] initWithDictionary:[info objectForKey:UIImagePickerControllerMediaMetadata]];
NSLog(@"dictionary: %@", metadata);
// rest of code snipped out to keep this question short
NSLog は次の情報を出力しますが、GPS 情報はありません
dictionary: {
DPIHeight = 72;
DPIWidth = 72;
Orientation = 6;
"{Exif}" = {
ApertureValue = "2.970853654340484";
BrightnessValue = "-1.198278557694757";
ColorSpace = 1;
DateTimeDigitized = "2012:04:11 21:55:29";
DateTimeOriginal = "2012:04:11 21:55:29";
ExposureMode = 0;
ExposureProgram = 2;
ExposureTime = "0.06666666666666667";
FNumber = "2.8";
Flash = 24;
FocalLength = "3.85";
ISOSpeedRatings = (
1000
);
MeteringMode = 5;
PixelXDimension = 2592;
PixelYDimension = 1936;
SceneType = 1;
SensingMethod = 2;
Sharpness = 1;
ShutterSpeedValue = "3.911199862602335";
SubjectArea = (
1295,
967,
699,
696
);
WhiteBalance = 0;
};
"{TIFF}" = {
DateTime = "2012:04:11 21:55:29";
Make = Apple;
Model = "iPhone 4";
Software = "5.0.1";
XResolution = 72;
YResolution = 72;
};
ALAssetLibrary を使用してこれを別の方法で試してみましたが、if
ステートメントを入力することはなく、そのelse
部分だけを入力すると、明らかに上記と同じ情報が生成されます。その結果、まだ GPS データがないので役に立ちません。
そのためのコードは次のとおりです。
という@property
タイプの を作成しますNSMutableDictionary
photoMetadataDictionary_
次に、.m ファイルで次の操作を行います。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.1f)
{
NSURL* assetURL = nil;
if ((assetURL = [info objectForKey:UIImagePickerControllerReferenceURL]))
{
// I never get here... Not sure why...
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:assetURL resultBlock:^(ALAsset *asset)
{
NSDictionary *metadata = asset.defaultRepresentation.metadata;
[photoMetadataDictionary_ addEntriesFromDictionary:metadata];
}
failureBlock:^(NSError *error)
{
}];
}
else
{
NSDictionary *metadata = [info objectForKey:UIImagePickerControllerMediaMetadata];
if (metadata)
{
[photoMetadataDictionary_ addEntriesFromDictionary:metadata];
}
}
}