Tak, jest to możliwe.
Musisz użyć ALAssetsLibrary
, aby uzyskać dostęp do rolki aparatu. Następnie po prostu wyliczasz swoje zdjęcia i pytasz o lokalizację.
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.
}];
Spowoduje to wyliczenie grup aktywów. Następnie wybierasz grupę i wyliczasz jej aktywa.
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];
}];
Teraz zmienna loc
zawiera lokalizację miejsca, w którym zdjęcie zostało zrobione. Przed użyciem należy go sprawdzić przed użyciem, ponieważ niektóre zdjęcia mogą nie zawierać tych danych.
Można podać ALAssetPropertyDate
, aby uzyskać datę i godzinę utworzenia zdjęcia.