2012-04-25 7 views
1

나는 CLLoctionCoordinate2D을 가지고 있는데, 그 점으로부터 주어진 거리만큼 떨어져 있는지를 알고 싶습니다. 예를 들어 100 마일을 사용할 수 있습니다. 그래서 컴퓨터의 북쪽, 남쪽, 동쪽, 서쪽으로 100 마일 지점을 컴퓨터에 놓기를 원합니다.위치 좌표를 다른 좌표에서 일정 거리 계산하기

동쪽과 서쪽은 꽤 쉽습니다. 두 좌표를 MKMapPoints으로 변환하고 distanceInMeters * MKMapPointsPerMeterAtLatitude(latitude)을 사용했습니다. 위도가 일정하기 때문에 동쪽과 서쪽이 잘 작동합니다.

그러나 북쪽과 남쪽에서는 작동하지 않습니다. 북쪽은 과소 평가되고 남쪽은 과소 평가됩니다 (이동시 MKMapPointsPerMeterAtLatitude이 변경되기 때문에). 북쪽과 남쪽에 대해 어떻게 이러한 점을 계산할 수 있습니까?

+1

CLLocation distanceFromLocation : 메소드를 사용하여 실제 거리를 반복하고 점검 할 수 없습니까? 컴퓨터주기에 너무 비싸지 않아야합니다. –

+0

나는 그것을 고려했다. 그러나 나는 조금 더 우아한 것을 발견하기를 바라고 있었다. –

답변

2

위도 당 60 해리가 있습니다. 이것은 경도에서도 마찬가지지만 적도에서만 적용됩니다. 해리 거리에서 경도 거리를 계산하려면 경도 * 60nm * cos (라디안 단위의 위도)로 거리를 곱하십시오.

MKMapPoints가 아닌 새로운 포인트 (북쪽 100 마일, 남쪽 100 마일 등)를 계산 한 다음 위도/경도 (CLLocationCoordinate2D?) 포인트를 MKMapPoints로 변환하십시오.

0

위도의 선은 항상 일정한 각도로 떨어져 있습니다. 그래서 당신이해야 할 일은 마일의 관점에서 얼마나 멀리 떨어져 있는지를 결정하는 것입니다. 그런 다음 북쪽/남쪽으로 100 마일을 얻은 다음 그것을위한 맵 포인트를 얻습니다. 지구 표면에서의 거리 공식은 어딘가에서 아마도 미터 또는 킬로미터 단위로 온라인이 될 것입니다.

관련 문제