【问题标题】:android- Find nearest location to my current placeandroid-查找离我当前位置最近的位置
【发布时间】:2014-12-09 12:42:14
【问题描述】:

我的数据库中有一些 GPS 坐标。

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

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

【问题讨论】:

  • 计算当前经纬度与数据库经纬度之间的距离。获取距离当前位置最近的最小距离。

标签: java android


【解决方案1】:

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

Documentation

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

【讨论】:

    【解决方案2】:

    用这个方法求两点之间的距离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");
    

    【讨论】:

    • 只是一个修复,dist = rad2deg(dist);应该是 dist = deg2rad(dist);和 unit == 'K' , unit == 'N' 加一个引号
    【解决方案3】:

    你可以使用这个来计算两个 latLongs 之间的距离。

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

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

    【讨论】:

      【解决方案4】:

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

      如果是,那么您可以使用 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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        • 2017-02-22
        • 1970-01-01
        • 1970-01-01
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多