1

不同的語言我使用ReverseGeocodeQuery類從座標獲得位置名稱:ReverseGeocodeQuery導致對系統語言

ReverseGeocodeQuery query = new ReverseGeocodeQuery(); 
query.GeoCoordinate = new GeoCoordinate(latitude, longitude); 
query.QueryCompleted += (sender, args) => 
{ 
    var result = args.Result[0].Information.Address; 
    Location location = new Location(result.Street, result.City, result.State, result.Country); 
};    
query.QueryAsync(); 

的問題是,結果顯示在手機的系統語言返回。由於我使用地名作爲標記目的,因此我需要使用相同的語言,最好是英語。

我已經通過設置CurrentCultureen-US嘗試:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 

但我仍然得到的配置爲系統語言,語言的結果。

是否有任何方法從所需語言中獲得ReverseGeocodeQuery的結果?

回答

1

結果總是使用系統語言。也許你可以保存這個地方的名稱,也可以保存經緯度,或使用翻譯服務來翻譯成英語

+0

我最終選擇使用諾基亞HERE的API,其中你可以指定語言。缺點是有必要在服務中註冊。我已經添加了下面的代碼。 – anderZubi

0

只是爲了完成Josue的答案。取得反向地理編碼的另一種方法是使用允許指定它的公共REST API之一(例如Google或Nokia Here)。雖然使用它們很簡單並且可以自定義,但缺點是需要註冊服務才能獲得密鑰。

我決定使用HERE的API。所以,下面你會發現代碼中,我已經使用來實現相同的結果作爲使用本代碼中的問題,而是迫使其結果是英文:

using (HttpClient client = new HttpClient()) 
{ 
    string url = String.Format("http://reverse.geocoder.cit.api.here.com/6.2/reversegeocode.json" 
        + "?app_id={0}" 
        + "&app_code={1}" 
        + "&gen=1&prox={2},{3},100" 
        + "&mode=retrieveAddresses" 
        + "&language=en-US", 
        App.NOKIA_HERE_APP_ID, App.NOKIA_HERE_APP_CODE, latitude.ToString(CultureInfo.InvariantCulture), longitude.ToString(CultureInfo.InvariantCulture)); 

    var response = await client.GetAsync(url); 
    var json = await response.Content.ReadAsStringAsync(); 
    dynamic loc = JObject.Parse(json);    
    dynamic address = JObject.Parse(loc.Response.View[0].Result[0].Location.Address.ToString()); 

    string street = address.Street; 
    string city = address.City; 
    string state = address.State; 
    string country = address.Country; 

    Location location = new Location(street, city, state, country); 
}