如何在android中实时获取给定位置和当前位置之间的距离

时间:2011-06-30 05:24:04

标签: android gps

我试图使用LocationListener及相关的类和方法在android中找到两个位置之间的距离。

  1. 我能够通过使用地理编码类来获取给定地址的坐标。并且还能够使用distanceto方法获得两个地址之间的距离。
  2. 2.现在我想给出地址并获取坐标,然后实时获得先前给定地址位置与当前位置(变化)之间的距离。因为在android中没有当前的位置方法我必须使用位置监听器。

    1. 在使用locationlistener和其他位置类和方法移动时,想要给定地址位置坐标与实时更改位置之间的距离。我在清单中具有所有权限的设备上编写并部署,但是一旦启动应用程序,gps就会被禁用。以下是我的代码
    2. //在代码下面获取成功的地址位置坐标

      int i=1;
          Geocoder geo=new Geocoder(this);
          List<Address> addressList = geo.getFromLocationName(adrs,i);
          Address address = addressList.get(0);
          if(address.hasLatitude() && address.hasLongitude()){
                lat = address.getLatitude();
                lon = address.getLongitude(); 
              String adlalo= "Latitude of above address: "+lat +"             " +
              "                     "+"Longitude of above address: "+lon;
              t2.setText(adlalo);
          }
      

      //及以下是位置监听器类

      public class LoctListner implements LocationListener
      {
             public void onLocationChanged(Location loc)
          {  
            t3 = (TextView) findViewById(R.id.textView3);  
            l1.setLatitude(lat);
        l1.setLongitude(lon);  
      
      
              float d=l1.distanceTo(loc);
              String s="the distance between starting and ending point is "+d;
              t3.setText(s);
      
       }    
      
      }
      

      帮助我犯错的地方。无法看到日志,因为我需要将设备带出来测试。因为这个应用程序需要一个移动的位置。谢谢提前

2 个答案:

答案 0 :(得分:0)

  

无法看到日志,因为我需要将设备带出来测试。因为这个应用程序需要移动位置

也许您忘了调用requestLocationUpdates()?

  

无法查看日志

你没有放任何日志。使用Logs.D(“YOURTAG”,“Logs statements”);

  Location l2 = new Location("");
  l2.setLatitude(loc.getLatitude());
  l2.setLongitude(loc.getLongitude());

^这不是必需的

 float door = l1.distanceTo(loc);

您必须等待几分钟,直到GPS图标停止动画。这意味着已经获得了修复。因此,请检查loc是否为null

答案 1 :(得分:0)

地理编码器没用。你无法通过地理编码器获取地址。 您可以使用Gson从Google地图Api解析json文档.json包含您的地址信息。