我正在制作一个照片应用程序,想知道我在处理带有地理标记的照片时有哪些选择。我想显示照片的拍摄地点(类似于照片应用程序)。这可能吗?
另外,我需要知道照片是什么时候拍摄的。我可以为自己拍摄的照片捕获此信息,但是相机胶卷图像呢?
我正在制作一个照片应用程序,想知道我在处理带有地理标记的照片时有哪些选择。我想显示照片的拍摄地点(类似于照片应用程序)。这可能吗?
另外,我需要知道照片是什么时候拍摄的。我可以为自己拍摄的照片捕获此信息,但是相机胶卷图像呢?
是的,有可能。
您必须使用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
获取照片创建的日期和时间。