1

これら2つの質問に似た解決策を探しています

しかし、ローカライズされていないバージョンの住所と地域を取得できるようにしたいと考えています。私の追加では、非ラテン語のローカライズされたデバイス ジオコーディング サービスでリバース ジオコーディングを実行するとCLPlacemark、ローカライズされたバージョンの住所が既に含まれている状態が返されます。たとえば、ジュネーブでは、ロシア語で iPhone を使用すると、

「Place de Plainpalais」の代わりに「Площадь Пленпале」

これはおそらくクールですが、通りの名前がキリル文字ではないため、混乱を招きます。また、住所のローカライズ版を別の API に送信して旅程を検索することもできません。それで、ロケールを強制する方法、reverseGeocodeLocationまたはOSを簡単にだましてロケール言語が別の言語に設定されていると思わせる方法はありますか?

また、アプリの再起動が必要なため、リクエストが機能しないように見える直前にこのようなことを行う

NSUserDefaults.standardUserDefaults().setObject("fr", forKey: "AppleLanguages"   
NSUserDefaults.standardUserDefaults().synchronize()
4

2 に答える 2

0

UserDefaults を変更することは不可能であることが判明しました (少なくとも、それを行うための実行可能な解決策は見つかりませんでした)。これは、Google API と Alamofire と SwiftyJSON を使用したもので、ジオコーディングが完了したときに住所を取得するために適切な completionHandler でラップされています

func getReversePositionFromGoogle(latitude:Double, longitude:Double, completionHandler: (JSON?, NSError?) -> ()) {
    var parameters = ["latlng":"\(latitude), \(longitude)", "sensor": true, "language": "fr"]
    Alamofire.request(.GET, "http://maps.google.com/maps/api/geocode/json", parameters: parameters as? [String : AnyObject])
        .responseJSON(options: NSJSONReadingOptions.AllowFragments) { (request, response, responseObject, error) -> Void in
            let json = JSON(responseObject!)
            completionHandler(json, error)
    }
}
于 2015-08-11T16:30:11.673 に答える