2012-04-12 12 views
6

Mögliche Duplizieren:
How Do I Get The Correct Latitude and Longitude From An Uploaded iPhone Photo?iPhone iOS Wie kann ich Foto-Metadaten und Geotagging-Informationen aus einem Kamerarollen-Bild extrahieren?

ich ein Foto-App machen und würde gerne wissen, was meine Optionen sind für mit Fotos mit Geotags zu arbeiten. Ich möchte anzeigen, wo ein Foto aufgenommen wurde (ähnlich der Fotos App). Ist das möglich?

Zusätzlich Ich muss wissen, wenn das Bild genommen wurde. Ich kann diese Informationen für die Bilder aufnehmen, die ich selbst mache, aber was ist mit den Kamerarollenbildern?

Antwort

13

Ja, es ist möglich.

Sie müssen ALAssetsLibrary verwenden, um auf Ihre Kamerarolle zuzugreifen. Dann listen Sie einfach durch Ihre Fotos auf und fragen nach dem Standort.

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. 

}]; 

Dies wird Ihre Asset-Gruppen auflisten. Als Nächstes nehmen Sie eine Gruppe auf und listen deren Assets auf.

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];  
}]; 

Jetzt ist Ihre loc Variable enthält Lage des Ortes, wo das Foto aufgenommen wurde. Sie sollten es vor der Verwendung gegen ALErrorInvalidProperty überprüfen, da einige Fotos diese Daten möglicherweise fehlen.

Sie können ALAssetPropertyDate angeben, um das Datum und die Uhrzeit der Fotoerstellung abzurufen.