40 votes

iOS - MKMapView place l'annotation en utilisant l'adresse au lieu de lat / long

Je suis en mesure de placer des annotations sur mes MKMapView en utilisant la latitude et la longitude, cependant, mon flux entrant pour lequel j'ai besoin d'utiliser l'emplacement utilise des adresses de rue au lieu de la latitude et de la longitude. par exemple 1234 ouest 1234 est, San Francisco, CA ...

Cela aurait-il un rapport avec la CLLocationManager ?

Quelqu'un a-t-il déjà tenté l'expérience ?

6voto

Joe Blow Points 3618

Voici une autre version ...

- Syntaxe Swift 2017

- Affiche un nom de lieu pour le point, en bas de l'écran

- Choisissez une taille quelconque, par exemple 5 km, comme zone représentée.

func map() {
    let 5km:CLLocationDistance = 5000

    let a= "100 smith avenue some town 90210 SD"
    let g = CLGeocoder()

    g.geocodeAddressString(a) { [weak self] placemarks, error in
        if let p = placemarks?.first, let l = placemark.location {

            let p = MKPlacemark(coordinate: l.coordinate, addressDictionary: nil)

            let cr = MKCoordinateRegionMakeWithDistance(l.coordinate, 5km, 5km)
            let options = [
                MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: cr.center),
                MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: cr.span)
            ]

            let m = MKMapItem(placemark: p)
            m.name = "Your House"
            m.openInMaps(launchOptions: options)
        }
    }

}

1voto

yinkou Points 3809

Ce n'est pas possible. Mais vous pouvez obtenir la longitude et la latitude d'une adresse en utilisant la fonction CLGeocoder classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X