android-查找最近的位置到我当前的位置

时间:2014-12-09 12:42:14

标签: java android

我的数据库上有一些gps坐标。

我得到了我当前的位置,但我不知道如何找到离我最近的位置以及我和那些点之间的距离。

你能帮我找到最近的位置以及我与这些点之间的距离吗?

4 个答案:

答案 0 :(得分:1)

您可以使用类distanceBetween()的内置方法android.location.Location来计算两个lat长度之间的距离。

Documentation

总的来说,您需要做的是,找到当前位置与所有其他点之间的距离,然后找出最小的点。

答案 1 :(得分:1)

使用此方法查找两点之间的距离http://www.geodatasource.com/developers/java

private double distance(double lat1, double lon1, double lat2, double lon2, char unit) {
      double theta = lon1 - lon2;
      double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
      dist = Math.acos(dist);
      dist = rad2deg(dist);
      dist = dist * 60 * 1.1515;
      if (unit == "K") {
        dist = dist * 1.609344;
      } else if (unit == "N") {
        dist = dist * 0.8684;
        }
      return (dist);
    }

    private double deg2rad(double deg) {
      return (deg * Math.PI / 180.0);
    }

    system.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "M") + " Miles\n");
    system.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "K") + " Kilometers\n");
    system.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "N") + " Nautical Miles\n");

答案 2 :(得分:0)

你可以使用它来计算两个纬度之间的距离。

Location loc1 = new Location("");
loc1.setLatitude(lat1);
loc1.setLongitude(lon1);

Location loc2 = new Location("");
loc2.setLatitude(lat2);
loc2.setLongitude(lon2);

float distanceInMeters = loc1.distanceTo(loc2);

为了找到最近的位置,我不确定你指的是什么。请详细说明。

答案 3 :(得分:0)

请告诉我们最近的位置是什么意思?你有那个位置(最近的位置)吗?

如果是,那么您可以使用Location类的 distanceBetween()方法。 http://developer.android.com/reference/android/location/Location.html#distanceBetween%28double,%20double,%20double,%20double,%20float[]%29

如果否,那么 Google提供了一些API,可以为您提供在Google上注册的附近地点,例如商城,机场,然后您就可以找到您与其他地点之间的距离。

请参阅以下链接了解更多详情。

http://www.androidhive.info/2012/08/android-working-with-google-places-and-maps-tutorial/