我想做一个获取当前地址的应用程序;国家/地区名称,城市名称和地区名称。然后我有3个旋转器,其中包含土耳其语中的所有国家名称,城市名称和地区名称。
当我使用GPS和Geocoder获取地址时,我想将它们与我的微调器中的名称相匹配。
问题是来自地理编码器的地址是英文的。所以,它与我的旋转器中的国家不匹配。所以我不能用编程方式选择真正的国家。
以下是我的相关代码:
//In here I add countries coming from web service into countries array.
for(int i=0;i<responseInfo.size();i++) {
String name = responseInfo.get(i).getName();
countries.add(name);
//If country name is equals to country name coming from gps
//then I hold it in selectedCountry variable.
//But "Turkey" != "Türkiye" so this if block does not work
if(name.equalsIgnoreCase(foundAddress.getCountryName()))
{
selectedCountryId = (String)responseInfo.get(i).getId();
selectedCountry = responseInfo.get(i);
}
}
//In this method, when I get country name from the item in addresses array
//it returns in English
public List<Address> findAddressFromLatLng(double latitude, double longitude)
{
Geocoder geocoder;
List<Address> addresses = null;
geocoder = new Geocoder(this, Locale.getDefault());
try {
addresses = geocoder.getFromLocation(latitude, longitude, 1);
} catch (IOException e) {
e.printStackTrace();
}
if ((addresses != null) && (addresses.size() != 0)) {
return addresses;
}
return null;
}
在另一台设备中,我没有问题。来自地理编码器的国家/地区名称是土耳其语(这意味着Geocoder也有土耳其语名称)。可能是因为设备语言。
我试图改变这一行,但我找不到土耳其语作为语言环境:
geocoder = new Geocoder(this, Locale.getDefault());
提前致谢。
答案 0 :(得分:2)
Geocoder
的文档建议设置Locale
正是您所需要的。土耳其语没有预定义的Locale
,但您可以轻松定义一个:
Locale locale = new Locale("tr", "TR");