2014-12-09 92 views
0

我在我的數據庫上有一些gps座標。android-尋找最近的位置到我目前的地方

我得到我目前的位置,但我不知道如何找到最近的位置和我和那些點之間的距離。

你能幫我找到最近的位置和我和那些點之間的距離嗎?

+1

當前的緯度和經度和緯度數據庫和longitude.Get這是從當前位置最近的最小距離之間計算距離之間的距離。 – Yugesh 2014-12-09 12:46:43

回答

0

你可以計算兩個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); 

對於尋找最近的位置,我不知道你指的是什麼。請詳細說明。

1

您可以使用類android.location.Location的內置方法distanceBetween()來計算兩個經緯度之間的距離。

Documentation

總體上是什麼,你需要做的是,單獨找到你的當前位置和所有其他點之間的距離,然後找出最小的一個。

0

您能告訴我們最近的位置是什麼意思嗎?你是否擁有該地區的經濟實力(最近的地點)?

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

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