android - 如何使用它们的经度和纬度值计算两个位置之间的距离

标签 android

这是我的代码,我使用下面的代码来计算两个位置之间的距离,使用它们的纬度和经度。它给出了错误的距离。有时会变得正确,有时会变得无关紧要。

我们正在从数据库中获取 lat1 和 lng1。

//getting lat2 and lng2 from GPS as below

public class MyLocationListener implements LocationListener {

  @Override
  public void onLocationChanged(Location loc)
  {
    lat2=loc.getLatitude();
    lng2=loc.getLongitude();
    String Text = "My current location is: " +"Latitud = "+ loc.getLatitude() +"Longitud = " + loc.getLongitude();

    //System.out.println("Lat & Lang form Loc"+Text);
    //Toast.makeText( getApplicationContext(), Text,Toast.LENGTH_SHORT).show();
  }

  @Override
  public void onProviderDisabled(String provider)
  {
  }

  @Override
  public void onProviderEnabled(String provider)
  {
  }

  @Override
  public void onStatusChanged(String provider, int status, Bundle extras)
  {
  }


  //Calculating distance
  double earthRadius = 3958.75;

  double dLat = Math.toRadians(lat1-lat2);
  double dLng = Math.toRadians(lng1-lng2);
  double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
             Math.cos(Math.toRadians(lat2)) * Math.cos(Math.toRadians(lat1)) *
             Math.sin(dLng/2) * Math.sin(dLng/2);
  double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  double dist = earthRadius * c;

最佳答案

有一个 android.location.Location.distanceBetween() 方法可以很好地做到这一点。

Android Developer Docs: Location

关于android - 如何使用它们的经度和纬度值计算两个位置之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6981916/

相关文章:

android - SearchView 作为 AlertDialog 的一部分

java - 不幸的是 MyApp 已停止。我该如何解决这个问题?

java - 安卓 Java :Getting your longitude and latitude on button click

java - 有条件的类导入

android - 如何使用架构组件分页库停止在回收站 View 上闪烁

android - 如何从 android 将数据存储在 firebase 上?

Android Firebase 数据库,检查值是否存在

android - 亚行错误 "Connection with adb was interrupted."

java - android中每个 TextView 的单独事件监听器

Android rawQuery - 有没有办法使用参数化的 "IN"来收集数据