Android geocoder.getFromLocation返回null
我的代码:Android geocoder.getFromLocation返回null,android,location,android-location,google-geocoder,Android,Location,Android Location,Google Geocoder,我的代码: try { Geocoder geocoder; List<Address> addresses; geocoder = new Geocoder(LocationActivity.this, Locale.getDefault()); address
try
{
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(LocationActivity.this, Locale.getDefault());
addresses = geocoder.getFromLocation(longitude,latitude,1);
Toast.makeText(LocationActivity.this, addresses.size() + "", Toast.LENGTH_LONG).show();
String address = addresses.get(0).getAddressLine(0);
String city = addresses.get(0).getAddressLine(0);
String country = addresses.get(0).getAddressLine(0);
Toast.makeText(LocationActivity.this, address + " " + city + " " + country, Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
Toast.makeText(LocationActivity.this,e.toString(), Toast.LENGTH_LONG).show();
}
试试看
{
地理编码器;
列出地址;
geocoder=新的geocoder(LocationActivity.this,Locale.getDefault());
地址=地理编码器.getFromLocation(经度,纬度,1);
Toast.makeText(LocationActivity.this,addresses.size()+“”,Toast.LENGTH_LONG.show();
字符串地址=地址.get(0).getAddressLine(0);
字符串city=addresses.get(0).getAddressLine(0);
字符串country=addresses.get(0).getAddressLine(0);
Toast.makeText(LocationActivity.this,地址+“”+城市+“”+国家,Toast.LENGTH_LONG).show();
}
捕获(例外e)
{
Toast.makeText(LocationActivity.this,例如toString(),Toast.LENGTH_LONG).show();
}
这是我从经度和纬度获取地址的代码。
但是每次address.size返回0时
如果您正在使用emulator,请转到DDMS,您将找到emulator control并在其中提供有效的lat lng,然后按send。。 确保在清单中提到互联网权限
try {
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());
double longitude = 23.00000;
double latitude = 72.00000;
addresses = geocoder.getFromLocation(longitude, latitude, 1);
Toast.makeText(this, addresses.size() + "", Toast.LENGTH_LONG)
.show();
String address = addresses.get(0).getAddressLine(0);
String city = addresses.get(0).getAddressLine(1);
String country = addresses.get(0).getAddressLine(2);
if(address==null)
address="";
if(city==null)
city="";
if(country==null)
country="";
Toast.makeText(this, address + " " + city + " " + country,
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
}
试试看{
地理编码器;
列出地址;
geocoder=新的geocoder(这个,Locale.getDefault());
双经度=23.00000;
双纬度=72.00000;
地址=地理编码器.getFromLocation(经度,纬度,1);
Toast.makeText(这个,addresses.size()+“”,Toast.LENGTH\u LONG)
.show();
字符串地址=地址.get(0).getAddressLine(0);
字符串city=addresses.get(0).getAddressLine(1);
字符串country=addresses.get(0).getAddressLine(2);
如果(地址==null)
地址=”;
如果(城市==null)
城市=”;
如果(国家==null)
国家=”;
Toast.makeText(此,地址+“”+城市+“”+国家,
Toast.LENGTH_LONG).show();
}捕获(例外e){
Toast.makeText(例如toString(),Toast.LENGTH_LONG).show();
}
我不确定这是否会有帮助,但我认为您遇到了IOException。看那只LogCat。另请参见如果平台中没有后端服务,Geocoder查询方法将返回空列表
参考-我找到了解决方案。。。
按住getFromLocation()
上的Ctrl
并转到Geocoder.class
。
然后下载android API的源代码并重新启动项目。
然后您会看到它的工作在try循环中使用条件地址.size()>0修复了它 我没有真正发现真正的问题在哪里,但似乎循环发生了两次,而且一次太早了,因为我可以让循环发生两次,一次是空的结果,一次是好的结果 也许来自我的两张地图和日期通过意图。
但是为我修复了检查权限,并在真实设备上测试,而不是在模拟器上测试(Anx:)但是我使用的是android api:8i使用的是三星设备我已经添加了两个权限检查你的lat long是否有效我检查了它。。。它的有效性最终与targetsdk版本15nope一起尝试。。。那是什么。。。你能详细描述一下吗。。我的api是8和android 2.2,但我正在targetsdk 8(2.2)中创建我的应用程序。。。现在我要做的是不。。我没有得到任何例外。。。但是地址大小始终为0,因此如何安装后端服务