关于java:如何在LatLng的国家语言中获得Geocoder的结果?

How to get Geocoder’s results on the LatLng’s country language?

我在应用程序中使用反向地理编码将latlng对象转换为字符串地址。我必须得到的结果不是设备的默认语言,而是给定位置所在国家的语言。有办法吗?这是我的代码:

1
2
3
4
5
6
7
8
9
    Geocoder geocoder = new Geocoder(context, Locale.getDefault());
    List addresses;
    try {
        addresses = geocoder.getFromLocation(location.latitude, location.longitude, 1);
    }
    catch (IOException | IndexOutOfBoundsException | NullPointerException ex) {
        addresses = null;
    }
    return addresses;


在代码中,geocoder以设备区域设置(语言)返回地址文本。

1从"地址"列表的第一个元素中,获取国家代码。

1
2
    Address address = addresses.get(0);
    String countryCode = address.getCountryCode

然后返回国家代码(例如"MX")。

2获取国家名称。

1
2
3
4
5
6
7
8
9
   String langCode = null;

   Locale[] locales = Locale.getAvailableLocales();
   for (Locale localeIn : locales) {
          if (countryCode.equalsIgnoreCase(localeIn.getCountry())) {
                langCode = localeIn.getLanguage();
                break;
          }
    }

3再次实例化locale和geocoder,然后再次请求。

1
2
3
4
5
6
7
8
9
10
11
    Locale locale = new Locale(langCode, countryCode);
    geocoder = new Geocoder(this, locale);

    List addresses;
        try {
            addresses = geocoder.getFromLocation(location.latitude,         location.longitude, 1);
        }
        catch (IOException | IndexOutOfBoundsException | NullPointerException ex) {
            addresses = null;
        }
        return addresses;

这对我很有效,希望对你也一样!