【问题标题】:How do I get cityname, province, state, from PHAsset in iOS 8 Photos Framework?如何从 iOS 8 照片框架中的 PHAsset 获取城市名称、省、州?
【发布时间】:2014-12-12 12:53:11
【问题描述】:

是否可以从 PHAsset 访问位置信息,例如城市名称和州。 iOS 照片应用程序显示了非常具体的位置信息,例如美国华盛顿州西雅图市的贝尔敦。但是,我能够从 PHAsset 访问的只是 location 属性中的 CALocation。我相信这只为我提供了地理坐标,因此仍然需要反向地理编码。我有数千张照片可以对每个用户进行反向地理编码。因此,我想避免进行反向地理编码,而只需访问 Apple 已经在“照片”应用程序中显示的人类可读位置信息。

简而言之,给定一个 PHAsset 对象,我如何在不使用反向地理编码服务的情况下访问照片位置的城市名称?

【问题讨论】:

  • 你有解决办法吗?

标签: ios objective-c ios8


【解决方案1】:

PHAsset 中有一个 location 属性,使用它。

static NSString *const kCityString  = @"City";
@property (nonatomic, copy) NSString *cityString;

...

CLGeocoder *geocoder = [CLGeocoder new];
__weak typeof(self) weakSelf = self;

[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
    __strong typeof(weakSelf) strongSelf = weakSelf;

    CLPlacemark *placemark = placemarks.lastObject;

    // deprecated since iOS 11.0
    strongSelf.cityString = placemark.addressDictionary[kCityString];

    // or equivalent
    strongSelf.cityString = placemark.locality;
}];

CLPlacemark查看其他属性。

【讨论】:

  • 简而言之,给定一个 PHAsset 对象,我如何在不使用反向地理编码服务的情况下访问照片位置的城市名称?您正在使用速率受限的反向地理编码服务。问题的重点是避免这种情况......
  • 在 PHAsset 中有一个属性,location。那么您将如何访问这些数据(城市、省等)取决于您。有一种像上面那样的原生方式,或者您可以使用 Google Maps API。如果有其他最简单的方法可以找出 Apple 没有提供的所有信息 CLGeocoder 和 Google,那就是 Maps API。
  • maps API 可以做的事情有一个严格的限制,所以它不能解决对大量照片进行反向地理编码的问题。请注意,在照片应用程序中,所有内容都已进行反向地理编码。因此,理想的做法是简单地访问该数据...
  • 这可能会有所帮助...有照片的Exif字典...可能会有一些有趣的东西?..我自己无法测试,我的设备坏了...@ 987654327@
【解决方案2】:

您可以使用 Google Maps API 对纬度和经度执行地理编码翻译。在这里查看更多:

https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding.

然后,如果您查询非常接近的位置,您可以缓存结果并重复使用它们。另一件事是使用 GeoLite 地理位置数据库,但这是大约 100 兆..

See here for download

【讨论】:

  • 这涉及使用反向地理编码器 API,该 API 仅限于对少量照片位置进行反向地理编码。
猜你喜欢
  • 2015-03-07
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
相关资源
最近更新 更多