Google地图的纬度和经度地址始终显示中国位置

时间:2015-04-25 09:06:55

标签: android google-maps

问题

我尝试使用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;
    }
}

1 个答案:

答案 0 :(得分:0)

更改区域设置

传入Geocoder constructor的区域设置代表查询结果的所需Locale 。这适用于以下代码:

 Geocoder coder = new Geocoder(getActivity(), Locale.getDefault());

警惕默认语言环境

来自Locale.getDefault();

的文档
  

请注意,有许多便捷方法会自动使用默认语言环境,但使用它们可能会导致细微错误。

     

一个常见的错误是在生成意味着机器可读的输出时隐式使用默认语言环境。这往往适用于开发人员的测试设备(特别是因为许多开发人员使用en_US),但在用户处于更复杂的语言环境的设备上运行时会失败。

默认语言环境很可能是China。这是有道理的,因为Xiaomi是中国制造商。这可能就是你继续获得中文地址的原因。

测试

尝试以下操作并检查日志以查看区域设置的设置:

Locale defaultLocale = Locale.getDefault();
Log.i("MyActivity", defaultLocale.toString());