마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Location 클래스의 distanceTo함수 리턴값이...잘못나옵니다.

0 추천

현재 나의 위치와 여러 지점들의 위치의 거리를 계산하여 보여주는 앱을 개발중인데요

 

현재 나의 위치는 같고 각각 지점들의 위치는 다릅니다.(당연한것)

지점들의 위치의 공통점은 저와의 거리가 2km안에 있다는 것이구요

 

결과값이 다르게 나온다는게..

지점들의 각각의 위치는 다른데 결과값이 똑같이 나온다는 것입니다.

 

일단 거리 구하는 함수입니다.

public String getDistance(double gps1, double gps2){
    String distance;

    Location locationA = new Location("point A");
    locationA.setLatitude(gps1);
    locationA.setLongitude(gps2);
    Log.i("지점 gps1", String.valueOf(gps1));
    Log.i("지점 gps2", String.valueOf(gps2));

    Location locationB = new Location("point B");
    locationA.setLatitude(mygps1);
    locationA.setLongitude(mygps2);
    Log.i("나의 gps1", String.valueOf(mygps1));
    Log.i("나의 gps2", String.valueOf(mygps2));
    distance = Double.toString(locationB.distanceTo(locationA));

    Log.i("거리", String.valueOf(distance));
    return distance;
}

pointA가 지점이고 pointB가 저의 위치입니다. 

그런데 로그를 찍어보면...

05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/지점 gps1﹕ 37.588394
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/지점 gps2﹕ 127.006714
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/나의 gps1﹕ 37.5814391
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/나의 gps2﹕ 127.0096693
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/거리﹕ 1.3186318E7
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/지점 gps1﹕ 37.584625
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/지점 gps2﹕ 127.0103
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/나의 gps1﹕ 37.5814391
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/나의 gps2﹕ 127.0096693
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/거리﹕ 1.3186318E7
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/지점 gps1﹕ 37.592163
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/지점 gps2﹕ 127.01738
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/나의 gps1﹕ 37.5814391
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/나의 gps2﹕ 127.0096693
05-29 18:22:33.639  29588-29675/com.example.ab.ab1 I/거리﹕ 1.3186318E7
 
반복문때문에 여러번 찍힙니다..반복문안에서 한번 실행할때마다 지점이 바뀌구요...
보시면 알겠지만 지점들 위치가 다른데 결과값은 같습니다.. 이거 어떻게 된걸까요?
실제 거리가 한 1km차이 나는 지점들도 결과값이 같습니다...이함수의 오차가 큰걸까요? 아님 제가 잘못하고있나요?
그리고 이함수의 리턴값이 미터단위라고 하는데... 저 결과의 마지막 E7은 뭘 의미하나요?
빙구짱 (1,720 포인트) 님이 2015년 5월 29일 질문

2개의 답변

+1 추천
 
채택된 답변
Location locationB = new Location("point B");
    locationA.setLatitude(mygps1);
    locationA.setLongitude(mygps2);
    Log.i("나의 gps1", String.valueOf(mygps1));
    Log.i("나의 gps2", String.valueOf(mygps2));
    distance = Double.toString(locationB.distanceTo(locationA));

locationB 아닌가요?

 

locationB.setLatitude(mygps1);

locationB.setLatitude(mygps2);

taejun (7,240 포인트) 님이 2015년 5월 29일 답변
빙구짱님이 2015년 5월 29일 채택됨
정말 감사합니다~ 저거 혼자했으면 죽어도 못봤을거에요 감사합니다~
0 추천
오류는  taejun 님 말처럼  locationA  만 값을 변경하고 있는 것이 문제로 보이내요.

그리고 덤으로 질문하신  1.3186318E7 에서의

E7은 부동소수점 표현이라고 하며 10 의 - 7 을 의미합니다.

1.3186318 * 10 ^ -7  이죠.
컴러기 (22,230 포인트) 님이 2015년 5월 29일 답변
...