2

重複の可能性:
アップロードされた iPhone の写真から正しい緯度と経度を取得するにはどうすればよいですか?

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タイプの を作成しますNSMutableDictionaryphotoMetadataDictionary_

次に、.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];
            }
        }
    }
4

0 に答える 0