J'ai un problème que j'essaie de comprendre. Je ne suis pas sûr de ce que serait une façon «élégante» d'aborder cela. C'est mon premier projet Swift, alors excusez-moi si je demande quelque chose de ridicule.Passer une variable d'un UIImagePickerController à d'autres fonctions dans Swift
J'ai ce contrôleur/sélecteur d'image pour obtenir la latitude/longitude d'une photo dans la photothèque d'un utilisateur.
//Get metadata from a photo. Save location (latitude/longitude)
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let picker = UIImagePickerController()
picker.delegate = self // delegate added
if let URL = info[UIImagePickerControllerReferenceURL] as? URL {
print("We got the URL as \(URL)")
let opts = PHFetchOptions()
opts.fetchLimit = 1
let assets = PHAsset.fetchAssets(withALAssetURLs: [URL], options: opts)
for assetIndex in 0..<assets.count {
var asset = assets[assetIndex]
var location = String(describing: asset.location!)
var photo_latitude = asset.location?.coordinate.latitude
var photo_longitude = asset.location?.coordinate.longitude
var coords : [String: Double] = ["longitude": photo_longitude!, "latitude": photo_latitude!]
PHAsset.fetchAssets(withALAssetURLs: [URL], options: nil)
dismiss(animated:true, completion: nil)
PHImageManager.default()
.requestImageData(for: asset,
options: nil) { resultData, response, orientation, info in
var data = resultData
DropboxClientsManager
.authorizedClient?
.files
.upload(path: "/development/image.jpg", mode: .overwrite, input : data!)
print(data!)
}
}
}
}
}
Je télécharge également l'image qu'ils ont sélectionnée dans Dropbox.
Voici mon problème. Je veux obtenir l'adresse de la latitude et de la longitude, mais j'ai besoin d'un moyen de passer la latitude et la longitude dans la fonction appropriée. J'utilise le code suivant avec l'API Google Maps pour trouver une adresse à partir de la latitude et de la longitude.
let baseUrl = "http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true/false"
let apikey = "hiding_my_api_key"
func getAddressFromGoogle() {
Alamofire.request(baseUrl, method: .get).responseJSON {
response in
if response.result.isSuccess {
print("Successful request.")
var locationData = JSON(response.result.value!)
let streetAddress = locationData["results", 0, "formatted_address"]
print(streetAddress)
print(locationData)
}
else {
print("Error \(response.result.error)")
}
}
}
Quelle serait la meilleure façon pour moi de passer photo_longitude
et photo_latitude
à ma fonction getAddressFromGoogle
?
Merci d'avance.
Ah, d'accord. Donc, je devrais appeler getAddressFrom à l'intérieur de mon contrôleur de sélecteur d'image? Cela semble beaucoup plus modulaire, mais je ne suis pas sûr que ce soit ce que vous voulez dire. Aussi, je vais aller avec photoLatitude/photoLongitude. Encore utilisé pour certaines conventions Python. – vipertherapper
@vipertherapper Oui, vous l'appellerez vraisemblablement dans votre boucle 'for' à un moment donné après avoir attribué' photoLatitude' et 'photoLongitude'. –
Je reçois une erreur en utilisant cette ligne: let textLat = numberFormatter.string (de: lat), textLong = numberFormatter.string (de: long) – vipertherapper