【问题标题】:(PHAsset location) returns (null) for Camera Roll photo even though location services are enabled即使启用了位置服务,(PHAsset 位置)也会为相机胶卷照片返回 (null)
【发布时间】:2015-08-03 18:25:01
【问题描述】:

我需要访问来自用户相机胶卷/照片库的用户提交照片的 GPS 坐标。为了现代性,我正在实施 PHAsset 而不是 ALAsset。

我知道位置服务已启用,因为我可以打印出用户的当前位置,并在我的 info.plist 文件中添加了“NSLocationAlwaysUsageDescription”、“NSLocationWhenInUseDescription”和“隐私 - 位置使用说明”键。我已经在我的 ViewController 的 .h 文件中导入了 CoreLocation、MobileCoreServices 和 Photos。

我当前在didFinishPickingMediaWithInfo委托方法中的代码如下:

NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL];
PHFetchResult *res = [PHAsset fetchAssetsWithALAssetURLs:[NSArray arrayWithObject:url] options:nil];
PHAsset *thisPhoto = [res objectAtIndex: 0];
CLLocation *photoLocation = [thisPhoto location];
NSLog(@"%@", photoLocation);

由于某种原因,这总是输出 (null)。我是否缺少某些东西阻止我访问 PHAsset 位置数据?我知道 PHAsset 已正确分配,因为 [PHAsset creationDate] 适用于我选择的任何照片。

谢谢!

【问题讨论】:

    标签: ios objective-c iphone location phasset


    【解决方案1】:

    您确实有权访问 PHAsset 位置数据(前提是可用)。用户可以选择不允许相机应用访问位置服务,这会导致照片中没有位置数据。

    【讨论】:

    • 看来你是对的。为什么某些照片有位置数据而其他照片没有?至少在我自己的照片库中,看起来照片几乎在有位置数据和没有位置数据之间交替出现,尽管我从来没有在我的手机上禁止定位服务。知道为什么吗?
    • 我知道的其他情况是:手机上截取的屏幕截图(没有位置数据),从 iTunes 同步的一些照片(可能有也可能没有位置数据)。在您的情况下,您需要排除 GPS 的接收问题。要么在户外尝试,要么确保 WIFI 处于开启状态。
    猜你喜欢
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多