В MacOS мне удалось получить названия мест из всех моих 90 000 фотографий, запросив базу данных Photos.sqlite.
Сейчас я пытаюсь сделать что-то подобное в iOS, но нашел только координату.latitude и координату.longitude.
Я вижу, что существует обратныйGeocodeLocation, который принимает координату и возвращает CLPlacemark, но запросы геокодирования скорость ограничена для каждого приложения.
Если я загляну в приложение «Фото» на iPhone, то увижу, что мои фотографии уже содержат метаданные названий мест. Они представлены где-нибудь в API?
private func fetchPhotoLocations() {
let fetchOptions = PHFetchOptions()
fetchOptions.includeHiddenAssets = false
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
let assets = PHAsset.fetchAssets(with: fetchOptions)
assets.enumerateObjects { (asset, index, stop) in
if let location = asset.location {
let resources = PHAssetResource.assetResources(for: asset)
let filename = resources.first?.originalFilename ?? "Unknown"
let options = PHAssetResourceRequestOptions()
options.isNetworkAccessAllowed = false
if let resource = resources.first {
PHAssetResourceManager.default().requestData(for: resource, options: options) { (data) in
} completionHandler: { (error) in
if let error = error {
print("Error loading resource: \(error)")
}
}
DispatchQueue.main.async {
self.photoLocations.append(PhotoLocation(
id: asset.localIdentifier,
coordinate: location.coordinate,
creationDate: asset.creationDate ?? Date(),
filename: filename
))
}
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... to-library