如何获得地理编码器在 LatLng 国家语言上的结果?

Posted

技术标签:

【中文标题】如何获得地理编码器在 LatLng 国家语言上的结果?【英文标题】:How to get Geocoder’s results on the LatLng’s country language? 【发布时间】:2015-09-13 15:12:59 【问题描述】:

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

Geocoder geocoder = new Geocoder(context, Locale.getDefault()); 列出地址; 尝试 地址 = geocoder.getFromLocation(location.latitude, location.longitude, 1); 捕捉(IOException | IndexOutOfBoundsException | NullPointerException ex) 地址=空; 返回地址;

【问题讨论】:

你的意思是如果设备是英文的,而且你在看北京,它实际上应该返回普通话字符? @TeoInke 不确定普通话字符,我的意思是它应该返回法国的法语名字,德国的德语,意大利的意大利语等 好的,知道了。根据我的发现,可以在 JS API 上设置语言,但不能在 android 上设置。 【参考方案1】:

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

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

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

然后返回国家代码(例如“MX”)

2 获取国家名称。

   String langCode = null;

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

3 再次实例化 Locale 和 Geocoder,并再次请求。

    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;

这对我有用,希望对你也有用!

【讨论】:

谢谢,也为我工作,除了我没有创建新的语言环境并使用第 2 步中的对象。

以上是关于如何获得地理编码器在 LatLng 国家语言上的结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何从谷歌地图地理编码返回地址类型?

如何防止谷歌地理编码器从其他国家返回结果

在哪里可以获得所有国家/地区的邮政编码?

使用地理编码从 latlang 转换为地址 Not working Android Kotlin

仅在地图中获得一些标记

如何通过反向地理编码获得可靠的美国各州响应?