我在我的數據庫上有一些gps座標。android-尋找最近的位置到我目前的地方
我得到我目前的位置,但我不知道如何找到最近的位置和我和那些點之間的距離。
你能幫我找到最近的位置和我和那些點之間的距離嗎?
我在我的數據庫上有一些gps座標。android-尋找最近的位置到我目前的地方
我得到我目前的位置,但我不知道如何找到最近的位置和我和那些點之間的距離。
你能幫我找到最近的位置和我和那些點之間的距離嗎?
你可以計算兩個latLong之間的距離。
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);
對於尋找最近的位置,我不知道你指的是什麼。請詳細說明。
您可以使用類android.location.Location
的內置方法distanceBetween()
來計算兩個經緯度之間的距離。
總體上是什麼,你需要做的是,單獨找到你的當前位置和所有其他點之間的距離,然後找出最小的一個。
您能告訴我們最近的位置是什麼意思嗎?你是否擁有該地區的經濟實力(最近的地點)?
如果是,則可以使用distanceBetween()方法的Location類。 http://developer.android.com/reference/android/location/Location.html#distanceBetween%28double,%20double,%20double,%20double,%20float[]%29
如果否,那麼 谷歌有一些API可以爲您提供在Google上註冊的附近地點,例如商場,機場,然後您可以找到您與其他地點之間的距離。
請參閱下面的鏈接瞭解更多詳情。
http://www.androidhive.info/2012/08/android-working-with-google-places-and-maps-tutorial/
使用此方法找到兩個點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");
當前的緯度和經度和緯度數據庫和longitude.Get這是從當前位置最近的最小距離之間計算距離之間的距離。 – Yugesh 2014-12-09 12:46:43