来自Geocoder的地址是英文的

时间:2016-07-22 15:00:09

标签: android gps geocoding

我想做一个获取当前地址的应用程序;国家/地区名称,城市名称和地区名称。然后我有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());

提前致谢。

1 个答案:

答案 0 :(得分:2)

Geocoder的文档建议设置Locale正是您所需要的。土耳其语没有预定义的Locale,但您可以轻松定义一个:

Locale locale = new Locale("tr", "TR");