[SWIFT] Coordonnées ==> Adresse (format ?)

InsouInsou Membre
février 2019 modifié dans API UIKit #1

Bonjour tout le monde,

Petit soucis du jour où je bloque un peu ^^

J'ai une mapView avec par dessus et centré, un icon de localisation.
Quand je déplace la map, l'icône reste toujours au centre.

J'ai une fonction qui récupère l'adresse du centre de la map :

let address = CLGeocoder.init()
address.reverseGeocodeLocation(CLLocation.init(latitude: self.mapView.centerCoordinate.latitude, longitude: self.mapView.centerCoordinate.longitude)) { (places, error) in
        if error == nil{
            if let place = places?.first {
               // ici ?
            }
        }
    }

J'arrive bien à récupérer les coordonnées et les convertir en adresse..
Le soucis est : Comment convertir l'adresse en fonction du pays ?

En France on écrit les adresses sous cette forme :
1 rue bidon, 75000 Paris
Mais dans d'autres pays, c'est différent..
Est ce qu'il y a un truc déjà tout fait qui convertis l'adresse avec le bon format ?

Et le deuxième soucis qui est aussi lié, c'est que j'ai un textfield sous la map pour y afficher l'adresse, est-ce-qu'il y a une fonction qui détecte quand j'ai fini de me balader sur la map, un truc qui se déclencherait après X secondes d'inactivité ?

Edit : Je crois que ce tuto résoudra mon soucis de textfield : https://www.youtube.com/watch?v=2wxE8byc2FQ
Je test ça demain ^^

Merci de votre aide :)

Réponses

  • LarmeLarme Membre
    février 2019 modifié #2

    Je n'ai pas utilisé CLPlaceMark, mais en regardant la doc :
    Utilise reverseGeocodeLocation(_:preferredLocale:completionHandler:) si possible, qui prends une locale ?
    Et sinon, pourquoi ne pas utiliser la propriété postalAddress de CLPlacemark, allié à localizedString(forKey:) si tu ne peux pas le faire (la première méthode nécessite iOS11+)?

    Pour la deuxième question, as-tu regardé du côté des méthodes de MKMapViewDelegate ?

  • InsouInsou Membre
    février 2019 modifié #3

    J'ai continué mes recherches avec tes pistes, j'ai trouvé un truc qui à l'air de me convenir ^^

    import Contacts
    
    let address = CLGeocoder.init()
    address.reverseGeocodeLocation(CLLocation.init(latitude: self.mapView.centerCoordinate.latitude, longitude: self.mapView.centerCoordinate.longitude)) { (places, error) in
        if error == nil{
                if let place = places?.first {
                    let postalAddressFormatter = CNPostalAddressFormatter()
                    postalAddressFormatter.style = .mailingAddress
                    var addressString: String?
                    if let postalAddress = place.postalAddress {
                        addressString = postalAddressFormatter.string(from: postalAddress)
                    }
                    print(addressString)
                }
            }
        }
    

    Pour la deuxième question, j'ai trouvé un tuto sur youtube qui à l'air pas mal, je vais tester ça et je repasserai faire un bilan ^^
    Edit : Bon bah nickel, le tuto fonctionne très bien pour ce que je veux faire, je vais pouvoir adapter et avancer avec ça :smiley:

    Merci :)

  • Je continue ici, pas besoin d'ouvrir un nouveau topic, ça reste dans le thème ^^

    J'ai un textfield et je souhaiterai faire de l'autocompletion lorsque je commence à écrire une adresse..
    Je n'ai aucune idée si il y a déjà quelque chose d'intégré (dans MapKit ?) ou si je dois interroger un service externe ?
    J'en appelle donc à votre bon coeur pour m'aiguiller :D

  • InsouInsou Membre
    février 2019 modifié #5

    Personne n'a de solution pour ça ? :/

    Edit:
    Et pile au moment où je post pour demander de l'aide, je tombe enfin sur ça : https://github.com/gm6379/MapKitAutocomplete
    Bon bah je vais tester :)

Connectez-vous ou Inscrivez-vous pour répondre.