我的代码:
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();
}
这是我从经度和纬度获取地址的代码。 但每次addresses.size返回0
任何人都可以帮助我吗
答案 0 :(得分:1)
我找到了解决方案...
在Ctrl
上按住getFromLocation()
并转到Geocoder.class
。
然后为您的android API下载源代码并重新启动您的项目。
然后你会看到它的工作
答案 1 :(得分:0)
如果您使用模拟器转到DDMS,您将找到模拟器控制并在其中提供有效的lat lng并按发送.. 和Batter确保在清单中提及Internet权限...
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();
}
答案 2 :(得分:0)
我不确定这是否会有所帮助,但我认为你得到的是IOException。看看LogCat。另请参阅this
答案 3 :(得分:0)
如果平台中没有后端服务,Geocoder查询方法将返回一个空列表。
参考 - http://developer.android.com/reference/android/location/Geocoder.html
答案 4 :(得分:0)
在try循环中使用条件address.size()> 0修复它。
我并没有真正发现真正的问题在哪里,但是似乎循环发生了两次,并且为时过早,因为我可能使循环发生了两次,结果是空的,结果是好。 >
也许是我作为两个地图和日期通过意图而来的。 但对我来说固定