위치를 향해 당신을 가리키는 앱을 만들려고합니다. 당신은 버튼을 누르고 GPS 좌표를 저장하고, 거리와 당신이 직면 할 필요가있는 각도와 같은 것을 계산합니다. 그런 다음 화면상의 나침반 그래픽을 사용하여 "포인팅"하여 기억 된 위치로 되돌아갑니다.안드로이드, gps와 나침반을 사용하여 좌표 방향을 지정하십시오.
적어도, 그렇게해야합니다. 몇 시간 동안 코드를 어지럽히고 난 후, 지난 몇 년 동안 trig 연습이 부족하여 어딘가에 논리 오류가 있다는 결론에 도달했습니다.
나침반과 GPS 위치는 비교적 자주 업데이트됩니다. 이것은 나침반을 회전시키고 거리를 표시하는 사용자 인터페이스의 기본 업데이트 호출 코드입니다.
public void updateUI(){
double deltaX = targetLongitude - currentLongitude;
double deltaY = targetLatitude - currentLatitude;
double distance = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
double rotation = Math.toDegrees(Math.atan2(deltaX,deltaY));
distanceTextView.setText(Double.toString(distance));
rotateCompass(rotation - degreesClockwiseFromNorth);
}
및 rotateCompass에 대한 코드 :
public void rotateCompass(double degrees){
degrees -= currentRotation; //calculates necessary rotation across updates
currentRotation += degrees;
matrix.postRotate(
(float) degrees,
compass.getDrawable().getBounds().width()/2,
compass.getDrawable().getBounds().height()/2);
compass.setImageMatrix(matrix);
}
내가 교체 할 때이
rotateCompass(rotation - degreesClockwiseFromNorth);
rotateCompass(0 - degreesClockwiseFromNorth);
으로 가리키는 때문에 내 회전 코드가 작동 거의 확실 해요 진짜 나침반과 나란히 북쪽으로 내가 직면하고있는 방향에 상관없이. 그러나 전자를 사용하면 일관된 지점을 가리키고 있지만 그 지점은 목표 지점 근처에없는 것 같습니다. 그래서 결론은 정확한 각도를 계산하거나 GPS가 너무 정확할 것으로 예상된다는 것입니다. 나는 뒷마당에서 할 수있는 것보다 더 먼거리를 테스트하지는 않았지만, GPS 정확도 문제가 있다면 나는 내 방향으로 잘못 가르키지 않고 나침반을 볼 수 있다고 생각합니다.
읽어 주셔서 감사합니다. 제안이나 수정 사항을 보내 주시면 감사하겠습니다.
당신은 진지해? 나는 그런 경우에 대해 생각하지도 않았다. 나는 이것에 들어가기 전에 조금 더 많은 조사를 했어야했다. 나는 그것을 시도 할 것이다. – user2816570
Location 객체를 다시 보면 distanceBetween 함수가 베어링을 반환하는 것을 볼 수 있습니다. 그것은 모든 계산 문제를 해결해야합니다. –
네 말이 맞아. 먼저 설명서를 읽지 않으려 고하는 그런 패배자 같아요. 하하, 다시 한번 감사드립니다. – user2816570