我正在使用Geocoder从lan / lat坐标获取地址。 问题是地址是用当地语言(通常是街道名称)。如何将其设置为仅使用英语?
我正在使用:
Geocoder geocoder = new Geocoder(Context, Locale.getDefault());
尝试:
Geocoder geocoder = new Geocoder(Context, Locale.ENGLISH);
Geocoder geocoder = new Geocoder(Context, Locale.US);
没有运气。
答案 0 :(得分:1)
API 19
我认为答案并不完全正确
我刚刚遇到这种情况,当我将GeoCoder语言环境设置为英语时,我得到了错误的街道名称
它没有翻译它们,但它删除了语言特定的部分,这是我的一个问题。
谷歌地图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