Ich versuche jetzt, etwas Ähnliches in iOS zu tun. habe aber nur „koordinate.latitude und „koordinate.longitude“ gefunden.
Ich sehe, dass es eine reverseGeocodeLocation gibt, die eine Koordinate annimmt und eine CLPlacemark zurückgibt, aber Geokodierungsanfragen sind Die Rate ist für jede App begrenzt.
Wenn ich in der Fotos-App auf dem iPhone nachschaue, kann ich sehen, dass meine Bilder bereits Ortsnamen-Metadaten enthalten. Werden diese irgendwo in einer API bereitgestellt?
Code: Select all
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
))
}
}
}
}
}