我的数据库上有一些gps坐标。
我得到了我当前的位置,但我不知道如何找到离我最近的位置以及我和那些点之间的距离。
你能帮我找到最近的位置以及我与这些点之间的距离吗?
答案 0 :(得分:1)
您可以使用类distanceBetween()
的内置方法android.location.Location
来计算两个lat长度之间的距离。
总的来说,您需要做的是,找到当前位置与所有其他点之间的距离,然后找出最小的点。
答案 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/