有没有办法使用纬度和经度离线(无Internet)模式获取位置地址?

时间:2014-10-21 07:45:14

标签: android geolocation

private String getCompleteAddressString(double LATITUDE, double LONGITUDE) 
    {
         String strAdd = "";
         Geocoder geocoder = new Geocoder(this, Locale.getDefault());
     try {
             List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);
             if (addresses != null) 
             {
                 Address returnedAddress = addresses.get(0);
                 StringBuilder strReturnedAddress = new StringBuilder("");

                 for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) 
                 {
                     strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
                 }
                 strAdd = strReturnedAddress.toString();
                 Log.w("My Current loction address", "" + strReturnedAddress.toString());
                 Toast.makeText(getApplicationContext(), "Address :" +strAdd, Toast.LENGTH_LONG).show();
             } 
             else 
             {
                 Log.w("My Current loction address", "No Address returned!");
             }
         } catch (Exception e) {
             e.printStackTrace();
             Log.w("My Current loction address", "Canont get Address!");
         }
         return strAdd;
     }

这是我的代码,但它需要Internet连接..当我在没有互联网连接的情况下运行它时会抛出异常服务器超时。

2 个答案:

答案 0 :(得分:1)

您无法在没有互联网的情况下离线经纬度。您可以通过网络,gps或location.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)(没有互联网)获取它。

https://stackoverflow.com/a/22085632/3864698。也许它可以帮助你。

答案 1 :(得分:0)

因为我不能评论我的声誉,抱歉没有提供真正的答案我猜: 根据Geocoder的文档,您所描述的正是预期的行为: http://developer.android.com/reference/android/location/Geocoder.html#getFromLocation%28double,%20double,%20int%29

如果你想以不同的方式处理这种情况,你不能只是明确地捕获那个IO异常吗?

如果你真的想获得一个有效的地址,你只能在离线数据库中镜像相关的lat,这是我不推荐的。