PHAsset位置 – GPS元数据,怎么了?

尝试使用Phasset从UIImage添加位置:

// image is a variable like so: image: UIImage var newAsset = PHAssetChangeRequest.creationRequestForAssetFromImage(image) newAsset.location = CLLocation(latitude: coordinate.latitude, coordinate.longitude) 

显然,这段代码可以工作 – >将新资源保​​存到具有良好坐标的照片库中。 我可以在图书馆里看到它。

但是当我使用exif工具和类似工具时,大部分时间,GPS字典都是空的,好像没有设置位置。 (另外,我注意到GPS信息不是exif格式)所以我猜,位置信息也在其他地方……

那么PHAsset的位置属性有什么问题? 如何设置正确的位置?

照片将位置元数据跟踪为其自己的数据库,与存储在每个照片文件中的EXIF元数据分开。 当您(作为Photos API的客户端)或用户创建/添加新资产时,Photos会从文件中读取EXIF位置数据,并在其数据库中设置要匹配的位置。 然而,除此之外,Photos API不会努力使这些保持同步。

如果要更新文件中的EXIF元数据,则需要自己执行此操作。 (图像I / O可以帮助解决这个问题 – 请参阅此答案 。)然后,使用creationRequestForAssetFromImageAtFileURL:或iOS 9中的新PHAssetCreationRequest内容将整个文件(而不仅仅是从其创建的UIImage )添加到Photos。