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

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

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

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

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

文档

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

使用此方法查找两点之间的距离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"); 

你可以用这个来计算两个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); 

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

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

如果是,则可以使用Location类的distanceBetween()方法。 http://developer.android.com/reference/android/location/Location.html#distanceBetween%28double,%20double,%20double,%20double,%20float%5B%5D%29

如果不是,那么谷歌有一些API可以为您提供在Google上注册的附近地点,如购物中心,机场,然后您可以找到您与其他地点之间的距离。

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

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