我尝试使用Geocoder.getFromLocationName()从地址检索纬度和经度。
它适用于某些Android设备,但一直显示我的Xiamoi手机的中国纬度和经度地址。但是,它应该显示我的位置 - Saket,Delhi,India 。
以下是代码:
public LatLng getLocationFromAddress(String strAddress) {
Geocoder coder = new Geocoder(getActivity(), Locale.getDefault());
List<Address> address;
LatLng p1 = null;
try {
address = coder.getFromLocationName(strAddress, 5);
if (address == null) {
return null;
}
Address location = address.get(0);
location.getLatitude();
location.getLongitude();
p1 = new LatLng(location.getLatitude(), location.getLongitude());
return p1;
}
}
答案 0 :(得分:0)
传入Geocoder constructor的区域设置代表查询结果的所需Locale 。这适用于以下代码:
Geocoder coder = new Geocoder(getActivity(), Locale.getDefault());
请注意,有许多便捷方法会自动使用默认语言环境,但使用它们可能会导致细微错误。
一个常见的错误是在生成意味着机器可读的输出时隐式使用默认语言环境。这往往适用于开发人员的测试设备(特别是因为许多开发人员使用en_US),但在用户处于更复杂的语言环境的设备上运行时会失败。
默认语言环境很可能是China。这是有道理的,因为Xiaomi是中国制造商。这可能就是你继续获得中文地址的原因。
尝试以下操作并检查日志以查看区域设置的设置:
Locale defaultLocale = Locale.getDefault();
Log.i("MyActivity", defaultLocale.toString());