我正在使用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();
问题是结果以手机的系统语言返回。由于我使用地名进行标记,因此我需要使用相同的语言,最好是英语。
我尝试将CurrentCulture
设置为en-US
:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
但我仍然使用配置为系统语言的语言获得结果。
是否可以用ReverseGeocodeQuery
获得所需语言的结果?
答案 0 :(得分:1)
结果始终使用系统语言。也许你可以保存这个地方的名字,也可以保存lat,或者使用翻译服务翻译成englis
答案 1 :(得分: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);
}