2016-11-07 2 views
0

SO, ich bin hier zu schnell und ich machte die Umwandlung von Strom Lat und Long City Namen und Land, funktioniert es so gut:Wie erzwinge Standardsprache in CLLocationManager zu Englisch?

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 
    if didFindLocation == false 
    { 
     didFindLocation = true 
     locationManager.stopUpdatingLocation() 
     userLocation = locations[0] 
     long = userLocation.coordinate.longitude; 
     lat = userLocation.coordinate.latitude; 
     print("\(lat),\(long)") 
     converLocationToCity() 
    } 
} 

func converLocationToCity() 
{ 
    let geoCoder = CLGeocoder() 
    userLocation = CLLocation(latitude: self.lat, longitude: self.long) 
    geoCoder.reverseGeocodeLocation(userLocation, completionHandler: 
    { 
     (placemarks, error) -> Void in 
     var placeMark: CLPlacemark! 
     placeMark = placemarks?[0] 
     if let city = placeMark.addressDictionary!["State"] as? String 
     { 
      self.city = city as String 
     } else 
     { 
      self.city = "" 
     } 
     if let country = placeMark.addressDictionary!["Country"] as? String 
     { 
      self.country = country as String 
     } else 
     { 
      self.country = "" 
     } 
     self.currentCity.name = ("\(self.city), \(self.country)" as String) 
     print("\(self.currentCity.name)") 
     self.fetchWeather.performCurrentWeatherFetch(forSelectedCity: self.currentCity.name) 
     DispatchQueue.main.async() 
      { 
      (self.superview as! UICollectionView).reloadData() 
     } 
    }) 
} 

Aber, wenn das Gerät auf eine andere Sprache eingestellt ist, Russisch für Zum Beispiel gibt es mir den Namen der Stadt und das Land in russischen Schriftzeichen zurück, aber ich brauche es nur auf Englisch, bitte irgendwer irgendwelche Ideen oder Vorschläge? Vielen Dank!

+0

http://stackoverflow.com applelanguage auf Standardwert setzt/questions/25144508/reverse-geocoding-to-return-result-only-in-english –

+0

mm es scheint zu sein, was ich brauche, aber es ist in Objective und ich bin neu in der Programmierung und schnell, also versuche ich für 40 Minuten schon und kann es nicht schaffen ... –

Antwort

0

Hier ist meine Lösung Während der Standortdaten immer i `UserDefaults.standard.set ändern ([ "base"], forKey: "AppleLanguages")‘

und einmal habe ich das Wörterbuch in Englisch erhalten i Gegenstand entfernen

UserDefaults.standard.removeObject(forKey: "AppleLanguages")

die dann

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let userLocation:CLLocation = locations[0] as CLLocation 
    // Call stopUpdatingLocation() to stop listening for location updates, 
    // other wise this function will be called every time when user location changes. 

    // manager.stopUpdatingLocation() 
    print("user latitude = \(userLocation.coordinate.latitude)") 
    print("user longitude = \(userLocation.coordinate.longitude)") 

    let geoCoder = CLGeocoder() 
    let location = CLLocation(latitude: userLocation.coordinate.latitude, longitude: userLocation.coordinate.longitude) 
    //location.accessibilityLanguage = "en-US" 
    UserDefaults.standard.set(["base"], forKey: "AppleLanguages") 
    geoCoder.reverseGeocodeLocation(location, completionHandler: { placemarks, error in 
     guard let addressDict = placemarks?[0].addressDictionary else { 
      return 
     } 
     print(addressDict) 
     // Print each key-value pair in a new row 
     addressDict.forEach { print($0) } 

     // Print fully formatted address 
     if let formattedAddress = addressDict["FormattedAddressLines"] as? [String] { 
      print(formattedAddress.joined(separator: ", ")) 
     } 

     // Access each element manually 
     if let locationName = addressDict["Name"] as? String { 
      print(locationName) 
     } 
     if let street = addressDict["Thoroughfare"] as? String { 
      print(street) 
     } 
     var myCity:String = "" 
     if let city = addressDict["City"] as? String { 
      print(city) 
      if(city != ""){ 
       myCity = city 
      } 
     } 
     if let zip = addressDict["ZIP"] as? String { 
      print(zip) 
     } 
     var myCountry:String = "" 
     if let country = addressDict["Country"] as? String { 
      print(country) 
      if(country != ""){ 
       myCountry = country 
      } 
      MyGenericFunctions.sharedInstance.saveCountry(country: country) 
     } 
     manager.stopUpdatingLocation() 

     if(myCity != "" && myCountry != "" && self.isCurrLocAPICalled != true){ 
      print("API Called") 
      self.isCurrLocAPICalled = true 
      self.callLocationSearch(strCity: myCity, strCountry: myCountry) 
      UserDefaults.standard.removeObject(forKey: "AppleLanguages") 
     } 

    }) 

    //manager.stopUpdatingLocation() 
} 
Verwandte Themen