Android Can';无法从经纬度获取地址
我有此代码,它应该可以工作,但当我调用它以获取返回的地址时,它会停止我的应用程序,以下是我的代码:Android Can';无法从经纬度获取地址,android,maps,Android,Maps,我有此代码,它应该可以工作,但当我调用它以获取返回的地址时,它会停止我的应用程序,以下是我的代码: public String getLocation() { String address = ""; if(loc!=null) { try { Address ads = geo.getFromLocat
public String getLocation()
{
String address = "";
if(loc!=null)
{
try
{
Address ads = geo.getFromLocation(loc.getLatitude(), loc.getLongitude(), 1).get(0);
address+= ads.getAddressLine(0)+", ";
if(ads.getAdminArea()!=null)
{
address+= ads.getAdminArea()+", ";
}
else if(ads.getLocality()!=null)
{
address+= ads.getLocality()+", ";
}
address+= ads.getCountryName()+".";
}
catch(IOException IOex)
{
address = " las coordenadas en el siguiente link. Estoy sin internet";
}
address += " http://maps.google.com/?q="+loc.getLatitude()+","+loc.getLongitude();
return address;
}
else
{
return "/";
}
}
我的代码正在另一个应用程序上运行,我不知道这里发生了什么,如果有人能帮助我,我将非常感激。首先,请查看Eclipse的日志或您当前正在使用的任何其他内容。 从日志中读取错误信息非常容易,尤其是当它为空时 第二,我对这个代码有一些疑问 我认为getAddressLine和getCountryName是空的,因为地址无法解码。 请检查一下。 你可以做System.out.println(“某物”);将信息打印到控制台 第三: 也许geo没有初始化?不仅像:Geocoder geo,而且Geocoder geo=新的Geocoder(currentContext) 最后一个提示是,地理编码应该作为ASyncTask来完成,因为它(ASyncTask)总是启动新线程,而不是冻结UI线程 下面是一些未实现异步但与您的代码非常相似的示例:
public class GeocodingTasks {
private Context appContext;
private Geocoder coder;
public GeocodingTasks(Context c) {
this.appContext = c;
this.coder = new Geocoder(c);
}
public Location getLocationFromAddress(String enteredAddress){
List<Address> address;
Location currentlyAdding = new Location(enteredAddress);
try {
address = coder.getFromLocationName(enteredAddress,1);
if (address != null && address.size() > 0) {
Address currentLocation = address.get(0);
currentlyAdding.setLatitude(currentLocation.getLatitude());
currentlyAdding.setLongitude(currentLocation.getLongitude());
Toast.makeText(appContext,
"You have added place: " + enteredAddress,
Toast.LENGTH_SHORT)
.show();
return currentlyAdding;
}
} catch (Exception e) { e.printStackTrace();
} finally {}
return null;
}}
公共类地理编码任务{
私人语境;
私人地理编码器;
公共地理编码任务(上下文c){
this.appContext=c;
this.coder=新的地理编码器(c);
}
公共位置getLocationFromAddress(字符串输入地址){
名单地址;
Location currentlyAdding=新位置(输入地址);
试一试{
地址=coder.getFromLocationName(输入地址,1);
如果(address!=null&&address.size()>0){
地址currentLocation=地址。获取(0);
currentlyAdding.setLatitude(currentLocation.getLatitude());
currentlyAdding.setLongitude(currentLocation.getLongitude());
Toast.makeText(appContext,
“您已添加位置:”+输入地址,
吐司,长度(短)
.show();
返回电流加成;
}
}catch(异常e){e.printStackTrace();
}最后{}
返回null;
}}
您可以从日志猫添加日志吗:)