Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';无法从经纬度获取地址_Android_Maps - Fatal编程技术网

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;
}}

您可以从日志猫添加日志吗:)