【问题标题】:How to get distance between a given location and current location real time in android如何在android中实时获取给定位置和当前位置之间的距离
【发布时间】:2011-06-30 05:24:04
【问题描述】:

我正在尝试使用 LocationListener 以及相关的类和方法来查找 android 中两个位置之间的距离。

  1. 我能够通过使用地理编码类获得给定地址的坐标。并且还能够使用 distanceto 方法获取两个地址之间的距离。

2.现在我想给出地址并获取坐标,然后实时获取先前给定地址位置与当前位置(变化)之间的距离。由于 android 中没有当前的定位方法,我必须使用 Location Listener。

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

//下面代码获取地址位置坐标成功

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

 }    

}

帮助我在哪里犯了错误。无法看到日志,因为我必须把设备拿出来测试。因为这个应用程序需要移动位置。提前致谢

【问题讨论】:

  • lat,lon 是双精度数,l1,l2 是在活动的 oncreate 之外声明的 Location 对象。

标签: android gps


【解决方案1】:

无法查看日志,因为我必须将设备拿出来进行测试。因为此应用需要移动位置

也许你忘了调用 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

【讨论】:

  • locman.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, minDistance, loclis);实际上确实在上面的代码块之前调用了它......是的,如果我不移动它会显示一个空指针异常......可以理解,但即使在移动它也不会;不会更新。谢谢你的回答
  • 是的,我可以立即使用 loc 而不是创建新位置 l2。谢谢。
  • 您等了多长时间,您在建筑物内吗?
  • 我在开车的时候在外面测试...至少需要 30 秒才能修复位置。最多 1 分钟......我想我这里出了什么问题,我的地址位置需要由用户提供......同时,由于位置正在改变,因此调用了 locationlistener,并且由于那时地址位置为空它正在产生一个 App not resp 错误...我想我需要使用 asynctask 在后台运行 locationlistener 逻辑。
  • 现在 getfromlocation 方法给出了问题...无法解析来自服务器的响应...并且它每次都继续出现。最好的方法是什么
【解决方案2】:

Geocoder 没用。你不能通过Geocoder latlng 获取地址。 您可以使用 Gson 解析来自 Google maps Api 的 json doc。json 包含您的地址信息。

【讨论】:

    猜你喜欢
    • 2016-06-07
    • 2013-03-31
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多