我正在尝试获取特定地址的地址但是当我尝试使用try并捕获它失败时。这是我的代码
srcGeoPoint = new GeoPoint((int) (src_lat * 1E6),(int) (src_long * 1E6));
Geocoder geocoder=new Geocoder(getBaseContext(), Locale.getDefault());
try
{
List<Address> addresses=geocoder.getFromLocation(srcGeoPoint.getLatitudeE6()/1E6,
srcGeoPoint.getLongitudeE6()/1E6,1);
String add="";
if(addresses.size()>0)
{
for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();
i++)
add += addresses.get(0).getAddressLine(i) + "\n";
}
tv.setText(add);
}
catch(IOException e)
{
e.printStackTrace();
}
这行失败了 列表地址= geocoder.getFromLocation(srcGeoPoint.getLatitudeE6()/ 1E6, srcGeoPoint.getLongitudeE6()/ 1E6,1); 任何帮助??
答案 0 :(得分:2)
地理编码器在模拟器中不起作用,如下所述: Does geocoder.getFromLocationName not work on emulators?
我也实现了自己,它实际上不是在模拟器中,而是在设备上。
答案 1 :(得分:1)
我没有权力批准答案,但迭戈是100%正确的,如果你想调试它,地理编码器不适用于你必须使用真实设备的模拟器。相信我,我花了最长的时间撞到墙上,直到我发现了什么是错的。所以请帮个忙,这样你就不会受到脑震荡,只需使用真正的设备
答案 2 :(得分:0)
你会把这些转换为双打:
srcGeoPoint.getLatitudeE6()/1E6
srcGeoPoint.getLongitudeE6()/1E6
完整代码:
List addresses=geocoder.getFromLocation((double) (srcGeoPoint.getLatitudeE6()/1E6), (double) (srcGeoPoint.getLongitudeE6()/1E6),1);