gps 위도 경도를 받으면..
위도 따로, 경도 따로 받는걸루 알고있습니다 .^^; 예제소스에도 그렇게 나오구요 하지만
a 라는 곳에 위도 경도를 받고 또다시 b 라는 곳에 최신 경도를 받고,,
다시 a 라는곳에 경도 받고, b 라는곳에 최신경도 받고.. 이런식으로 할려면 어떻게해야 하나요?
그러니깐 a = 경도 b= 최신경도 a= 최신경도 b= 최신경도 이런식으로 순차적으로 값을 받아
a b 비교 , b 하고 a 비교, a 하고 b 비교, 이런식으로 만들려고 합니다..
어떻게하면 되나요? 조언좀 꼭 부탁드리겠습니다...
와우 정말 감사합니다. ^^ 그런데 궁금한것이, lastLocation = location; 이부분. .이것은 전에있던걸 지우고 최신걸 이전 좌표로 할당 해주는것인가요? 그럼 최신 좌표가 들어오면 계속 반복 되는건가요?
그리고 만약 이 어플이 종료 되어, 다시 켰을떄, 과거 값을 남아있나요????
네 반복됩니다, gps로 좌표를 10개 받았다면 10번째가 location 9번째가 last:Location이 되겠죠.
lastLocation 은 메서드 밖에서 전역변수로 public static 으로 선언되서 onLocationChanged(Location location) 메서드가
gps를 수신할 때마다 location은 바뀌어도 lastLocation 은 함수안에서 lastLocation = location; 할당해줬던 값을 가지고 있는답니다.
종료 후 값을 가지고있는지는 정확히 모르겠습니다. 테스트 해보시면 알 수 있으실듯..
아무래도 확실하게 하기 위해 종료할 때 lastLocation의 값을 지우시고 싶으시다면
해당 액티비티의 onDesTroy() 메서드에서
lastLocation.reset(); 이렇게 clear 해주시면 될 듯.
onLocationChanged(Location location) 메서드를 구현합니다.
단말기의 gps가 수신이 있을 때 마다 위치 정보(location)값이변합니다.
그렇다면 지금 수신한 좌표를 저장하고있다가 좌표가 변할 때 그 값과 비교하면 될 것입니다.
location.getLatitude(); // 위도 location.getLongitude(); // 경도 이렇게 위도와 경도는 get 해서 사용할 수있습니다.
이전 좌표를 간직하고 있을 변수를 선언합니다.
Location lastLocation; // 메서드 밖에 전역적으로 static 하게 선언해주는게 좋겠죠?
a 와 b 단 두 개의 좌표를 비교하시면 위처럼 하나만 선언하시고 여러 개를 비교하실꺼면 배열로 선언해도 되겠습니다.
gps를 처음 시작할 때는 lastLocation은 없으므로
//이전의 좌표가 존재 할 때만 비교합니다.
if (lastLocation != null) {
if( lastLocation.getLongitude() < location.getLongitude())
{System.out.println( "북쪽으로 이동했당");}
}
lastLocation = location; // 마지막에 최신의 좌표는 이전의 좌표로 할당해 줍니다.