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连接..当我在没有互联网连接的情况下运行它时会抛出异常服务器超时。
答案 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,这是我不推荐的。