2014-12-09 4 views
0

데이터베이스에 일부 GPS 좌표가 있습니다.android- 내 현재 위치와 가장 가까운 곳을 찾으십시오.

현재 위치를 얻지 만 나에게 가장 가까운 위치와 나와 저 지점 사이의 거리를 어떻게 찾을 수 있는지 잘 모릅니다.

가장 가까운 위치와 저 지점 사이의 거리를 찾도록 도와 줄 수 있습니까?

+1

현재의 위도와 경도 및 데이터베이스 위도와 longitude.Get 현재 위치에서 가장 가까운입니다 가장 작은 거리와 계산 거리 사이의 거리를 찾을 수 있습니다. – Yugesh

답변

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()을 사용하여 두 개의 long long 사이의 거리를 계산할 수 있습니다.

무엇 당신이 할 필요가 전체에

Documentation

, 개별적으로 현재 위치와 다른 점 사이의 거리를 찾은 다음 작은 일을 찾을 수 있습니다.

0

가까운 위치에서 무엇을 의미합니까? 해당 위치의 반경이 있습니까 (가장 가까운 위치)?

그렇다면 distanceBetween() 위치 클래스 방법을 사용할 수 있습니다. http://developer.android.com/reference/android/location/Location.html#distanceBetween%28double,%20double,%20double,%20double,%20float[]%29

아니요, 그렇다면 Google에는 몰, 공항과 같이 Google에 등록 된 주변 장소를 제공하는 API가 있으며 사용자와 다른 위치 간의 거리를 찾을 수 있습니다.

자세한 내용은 아래 링크를 참조하십시오.

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"); 
관련 문제