나는 위도와 경도가있는 위치를 가지고 있으며 그 위치로부터 x 미터 떨어진 위치에 d 각도로 새 위치를 가져 오려고합니다. 이것은 Location.distanceBetween()의 반대 일 것입니다. 이를 수행 할 Android API가 있습니까? 나는 그러한 기능을 스스로 프로그램 할 수 있다는 것을 알고 있지만 이미 API가 있는지 궁금하다.Reverse Location.distanceBetween()
답변
현재이 기능을 구현하십시오. 그러나이 기능이 어느 시점에 나타나기를 기대하므로 코드를 작성하십시오. 자신 만의 함수를 만들고 몇 가지 단위 테스트를 추가하십시오. 이 기능에 향후
는 다음을 추가 :def myFunc(args):
res = # compute stuff
#if(debug):
res2 = # make api call
assert(res = res2)
return res
그리고 나중에 시간 :
def myFunc(args):
return # make api call
그리고 약간의 시간 후에 완전히 기능을 제거합니다.
이것은 "최초 측지선"(또는 때때로 "주요 측지학") 문제로, 직접 구현해야하는 경우 Google에서 알고리즘을 찾는 데 도움이 될 것입니다.
여기에는 몇 가지 수식과 샘플 코드 (JavaScript)가 있습니다. Movable Type Scripts. '출발점에서 주어진 거리와 방향을 가진 대상 점'을 찾으십시오. brng
는 각도 방위이고, 거리가
var lat2 = Math.asin(Math.sin(lat1)*Math.cos(d/R) +
Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng));
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1),
Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
상기 코드에서
, d
및 R
는 지구 반지름이다
여기 사이트에서 자바 스크립트의 발췌이다.
Java로 이식하는 것은 쉽지 않습니다.
SphericalUtil.computeOffsetOrigin(loc1, dist, angle);
그것은 또한 distanceBetween 기능이 있습니다 :
SphericalUtil.computeDistanceBetween(...);
해방 : 참고로
지구가 평평하다고 가정합니다. –
나는 그렇게 생각하지 않지만이 방법은 정확하지 않다. 3D 영역에서 다음을 시도해 볼 수 있습니다. http://earth-api-utility-library.googlecode.com/svn/trunk/extensions/examples/destination.html (Google 어스 웹 플러그인 필요) –
여기에는 구형 지구 (그것이 당신이'R'을 필요로하는 이유입니다.), 그러나 당신이 여행하는 거리에 비례하는 오차가 있습니다. 이 오류의 절대 값은 큰 거리에서 커질 수 있으므로 큰 값에 대해서는 문제가있는 것입니다. –
, 당신은 더 사용할 수 있습니다 여기 –
r 30 포인트, 로마, 그리고 당신은 스스로 다시 질문을 할 수 있습니다! ;) –
그것은 그렇게 보이지 않습니다. – CaseyB