2016-05-09 10 views
0

Ich habe versucht, aktuelle Stadt Name und Ländername mit swift zu bekommen. Hier ist mein Quellcode. // Dann in CLLocationManagerDelegate Methode können Sie Benutzer den aktuellen Standort erhalten Koordinaten:Kann den richtigen Stadtnamen nicht in SWIFT mit CLGeocoder erhalten

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let locValue:CLLocationCoordinate2D = manager.location!.coordinate 
    print("locations = \(locValue.latitude) \(locValue.longitude)") 
    self.locationManager.stopUpdatingLocation() 
    getAddressFromGeocodeCoordinate(manager.location!) 

} 

func getAddressFromGeocodeCoordinate(locationObj: CLLocation) { 
    let geocoder = CLGeocoder() 
    geocoder.reverseGeocodeLocation(locationObj, completionHandler: { (placemarks, error) -> Void in 

     // Place details 
     var placeMark: CLPlacemark! 
     placeMark = placemarks?[0] 

     // Address dictionary 
     print(placeMark.addressDictionary) 

     // City 
     if let city = placeMark.addressDictionary!["City"] as? NSString { 
      print("city:",city) 
     } 

     // Country 
     if let country = placeMark.addressDictionary!["Country"] as? NSString { 
      print("country", country) 
     } 

    }) 
} 

Aber als ich Stadt ausdrucken möchten es nil. Ich trid auch placeMark.subAdministrativeArea, aber es gibt auch Null zurück.

Ich bin derzeit in Dandong Stadt.

Mein Code druckt Land gut. wie country China aber Stadt.

Wer kennt die Lösung?

+0

bekommen Könnten Sie uns einige Koordinaten geben, wo es nicht funktioniert tun, wie Sie erwarten? –

+0

@JulienQuere Np, Breite = 40,025411910838, Länge = 124,343855400189 –

Antwort

2

Prüfen, ob Fehler oder was ist die Antwort von print(placeMark.addressDictionary)

geocoder.reverseGeocodeLocation(newLocation, completionHandler: {(stuff, error)->Void in 

     if error { 
      println("reverse geodcode fail: \(error.localizedDescription)") 
      return 
     } 

     if stuff.count > 0 { 
      self.placemark = CLPlacemark(placemark: stuff[0] as CLPlacemark) 

      self.addressLabel.text = String(format:"%@ %@\n%@ %@ %@\n%@", 
       self.placemark.subThoroughfare ? self.placemark.subThoroughfare : "" , 
       self.placemark.thoroughfare ? self.placemark.thoroughfare : "", 
       self.placemark.locality ? self.placemark.locality : "", 
       self.placemark.postalCode ? self.placemark.postalCode : "", 
       self.placemark.administrativeArea ? self.placemark.administrativeArea : "", 
       self.placemark.country ? self.placemark.country : "") 
     } 
     else { 
      println("No Placemarks!") 
      return 
     } 

     }) 
Verwandte Themen