我正在更新我的应用程序以允许在使用 UIImagePickerControllerSourceTypeSavedPhotosAlbum 时将照片上传到包含 GPS 元数据。GPS 数据的准确性非常重要。我遇到了一个问题,即使用 ALAsset 派生的位置数据与我在 Photoshop 中打开同一张照片时可以看到的照片的实际 exif 数据不同。
我使用了两种方法来读取 xcode 中的 GPS 数据:
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset) {
CLLocation *location = [myasset valueForProperty:ALAssetPropertyLocation];
latitudeString = [NSString stringWithFormat:@"%g",point.latitude];
longitudeString = [NSString stringWithFormat:@"%g",point.longitude];
}
和
ALAssetRepresentation *representation = [myasset defaultRepresentation];
NSDictionary *metadata = [representation metadata];
NSDictionary *gpsDict = [metadata objectForKey:@"{GPS}"];
NSNumber *latitudeNumber = [gpsDict objectForKey:@"Latitude"];
NSNumber *longitudeNumber = [gpsDict objectForKey:@"Longitude"];
if ([[gpsDict valueForKey:@"LatitudeRef"] isEqualToString:@"S"])
{
//latitudeNumber = -latitudeNumber;
}
if ([[gpsDict valueForKey:@"LongitudeRef"] isEqualToString:@"W"])
{
//longitudeNumber = -longitudeNumber);
}
在我使用的代表性照片上,上面的两组代码都给了我 47.576333 的纬度,它转换为 47,34,35N
如果我查看 Photoshop exif 数据 - 纬度是 47,34,59N
这些数字很接近——但它们并不相同。这发生在我没有大约 30% 的照片的情况下。知道为什么吗?
编辑 - 照相馆不给出秒数 - 它给出了 34.59 分钟,这确实是准确的。