Geocoder的英语而不是本地语言

时间:2014-02-11 21:34:13

标签: android google-maps google-geocoder

我正在使用Geocoder从lan / lat坐标获取地址。 问题是地址是用当地语言(通常是街道名称)。如何将其设置为仅使用英语?

我正在使用:

Geocoder geocoder = new Geocoder(Context, Locale.getDefault());

尝试:

Geocoder geocoder = new Geocoder(Context, Locale.ENGLISH);
Geocoder geocoder = new Geocoder(Context, Locale.US);

没有运气。

3 个答案:

答案 0 :(得分:1)

API 19
我认为答案并不完全正确 我刚刚遇到这种情况,当我将GeoCoder语言环境设置为英语时,我得到了错误的街道名称 它没有翻译它们,但它删除了语言特定的部分,这是我的一个问题。

例如,“Straße”变成了“St”。

谷歌地图HTTP地理编码器API在这方面有所不同,当我设置一个英语时,正确地返回街道,只是测试的国家被翻译(奥地利而不是Österreich)。

由于许多人使用HTTP API作为后备,以防Geocoder失败,这可能是一个问题,就像我的情况一样。
我的解决方案是始终将国家/地区的区域设置用于BOTH API,然后结果匹配 HTTP API有一个& language参数,它将Local.toString()理解为值;
可以像显示的原始问题一样初始化地理编码器。

答案 1 :(得分:0)

我不认为这是可能的。街道名称是街道名称。他们没有得到翻译。你有一个名字。无论用什么语言,你的名字都是你的名字。当你与外国人交谈时,你不会“翻译”你的名字。

Geocoder只是一个将Geocoordinates映射到其他权限的数据库。通常,您不会找到街道的多个名称。有一些实例可以翻译名称(例如,城市名称可以翻译成多种语言),但是theese是例外而不是规则。

答案 2 :(得分:0)

创建一个新的locate实例,如下所示:

    Locale aLocale = new Builder().setLanguage("en").setScript("Latn").setRegion("RS").build();
    Geocoder geocoder = new Geocoder(context,aLocale);

https://developer.android.com/reference/java/util/Locale.Builder.html