写真アプリを作成していますが、ジオタグ付きの写真を操作するためのオプションを知りたいです。写真が撮られた場所を表示したいと思います(写真アプリに似ています)。これは可能ですか?
さらに、写真がいつ撮影されたかを知る必要があります。自分で撮った写真についてはこの情報をキャプチャできますが、カメラ ロールの画像についてはどうでしょうか。
写真アプリを作成していますが、ジオタグ付きの写真を操作するためのオプションを知りたいです。写真が撮られた場所を表示したいと思います(写真アプリに似ています)。これは可能ですか?
さらに、写真がいつ撮影されたかを知る必要があります。自分で撮った写真についてはこの情報をキャプチャできますが、カメラ ロールの画像についてはどうでしょうか。
はい、可能です。
ALAssetsLibrary
カメラロールにアクセスするには、を使用する必要があります。次に、写真を列挙して場所を尋ねます。
assetsLibrary = [[ALAssetsLibrary alloc] init];
groups = [NSMutableArray array];
[assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
if (group == nil)
{
return;
}
[groups addObject:group];
} failureBlock:^(NSError *error)
{
// Possibly, Location Services are disabled for your application or system-wide. You should notify user to turn Location Services on. With Location Services disabled you can't access media library for security reasons.
}];
これにより、アセットグループが列挙されます。次に、グループをピックアップして、そのアセットを列挙します。
ALAssetGroup *group = [groups objectAtIndex:0];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if (result == nil)
{
return;
}
// Trying to retreive location data from image
CLLocation *loc = [result valueForProperty:ALAssetPropertyLocation];
}];
loc
これで、変数に写真が撮影された場所の場所が含まれます。ALErrorInvalidProperty
一部の写真にはこのデータが不足している可能性があるため、使用する前に確認する必要があります。
ALAssetPropertyDate
写真作成日時の取得を指定できます。