是否可以从PHAsset访问位置信息,例如城市名称和州。 iOS Photos应用程序显示非常具体的位置信息,如Belltown,Seattle,Washington,USA。但是,我能够从PHAsset访问的所有内容都是来自location属性的CALocation。我认为我只提供地理坐标,因此仍然需要反向地理编码。我有数以千计的照片来反转每个用户的地理编码。所以,我想避免必须进行反向地理编码,只需访问Apple已经在照片应用中显示的人类可读位置信息。
简而言之,在给定PHAsset对象的情况下,如何在不使用反向地理编码服务的情况下访问照片位置的城市名称?
答案 0 :(得分:1)
在PHAsset
中,有一个位置属性,请使用它。
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
了解其他属性。
答案 1 :(得分:0)
您可以使用Google Maps API在纬度和经度上执行地理编码转换。点击此处了解更多信息:
https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding.
然后,如果查询非常接近的位置,则可以缓存结果并重复使用它们。另一件事是使用GeoLite地理位置数据库,但这是100 megs ..