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/