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

구글맵에 각도와 거리를 사용해서 라인을 그리려고 합니다.

0 추천

한점에서 특정 각도와 거리를 입력받으면

그 각도와 거리만큼 떨어진 곳에 마커를 찍고, 라인을 그릴려고 하는데요

 

http://stackoverflow.com/questions/2637023/how-to-calculate-the-latlng-of-a-point-a-certain-distance-away-from-another

 

여기 있는 이 식을 사용해서 시도했는데,

분명 입력값은 거리 330미터에 85도 각도를 입력했는데,

결과는 영 이상하게 나오더군요...

 

위의 식이 잘못된건지, 어디가 잘못된건지 잘 모르겠습니다 ㅠㅠ

계산법을 아시는분께서는 설명좀 해주셨으면 감사하겠습니다 __);

 

아우아디 (1,900 포인트) 님이 2015년 10월 5일 질문

1개의 답변

0 추천
 
채택된 답변
링크주신 스텍오버의 방식은 구체의 표면에서 거리와 각도를 이용해서 위치를 계산하는 방식인것으로 보입니다.

결과가 어떻게 잘못되어지는 것인지 응용한 코드를 보여주실수 있는지요?

단위값이 잘못되거나 한것은 아닐지요?

기본적으로 링크의 거리 입력단위는 km 단위입니다.
컴러기 (22,230 포인트) 님이 2015년 10월 5일 답변
아우아디님이 2015년 10월 5일 채택됨
addstartresult.setLatitude(startPOI.getLatitude()*Math.PI/180);
        addstartresult.setLongitude(startPOI.getLongitude()*Math.PI/180);
         
        addendresult.setLatitude((Math.asin(Math.sin(addstartresult.getLatitude()) * Math.cos(dist) +
                Math.cos(addstartresult.getLatitude()) * Math.sin(dist) * Math.cos(brng)))* 180 / Math.PI);
       
        addendresult.setLongitude((addstartresult.getLongitude() + Math.atan2(Math.sin(brng) * Math.sin(dist) *
                Math.cos(addstartresult.getLatitude()),
                Math.cos(dist) - Math.sin(addstartresult.getLatitude()) *
                Math.sin(addendresult.getLatitude())))* 180 / Math.PI);

addstartresut에서 거리 dist와 각도 brng를 사용해서 addendresult 를 도출하게끔 구현했습니다. 계산된 각도와 거리의 수치 값은 정상적으로 나오는데, 지도상에 표시되는 좌표가 다르게 나오고 있습니다 ㅠㅠㅠ

정상적인 수치값이라는것은 http://www.movable-type.co.uk/scripts/latlong-vincenty.html#direct 이 사이트에서 확인했습니다.
dist 는 radian으로 변경해주셨나요?  dist = dist/ (6371*1000); 이렇게요
double dist = avgdist / 6371000;
        double brng = avgangle*Math.PI/180;
이렇게 처리했습니다.
...