2012-08-09 5 views
2

내가 이렇게 내 좌표를 포맷해야합니다어떻게 이런 식으로 좌표를 지정할 수 있습니까?

N 61° 14.5919' 
E 23° 28.1751' 

지금 내 좌표는 다음과 같이 :

61.145919 
23.281751 

내 코드 :

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 
    latitudeLabel.text = [NSString stringWithFormat:@"%f", newLocation.coordinate.latitude]; 
    longitudeLabel.text = [NSString stringWithFormat:@"%f", newLocation.coordinate.longitude]; 
} 
+2

[이] [1] 포스트가 도움이 될 수 있습니다 다음을 참조하십시오. 즐겨! [1] : http://stackoverflow.com/questions/8851816/convert-decimal-coordinate-into-degrees-minutes-seconds-direction – parilogic

답변

0

쉽지 않습니다.

예를 들어, 북쪽 방향은 61도, 초는 14.5919 분입니다. 초는 소수 자릿수로 표시됩니다.

분을 센티미터로 변환해야합니다.

61+ 14.5919/60은 61.31983이됩니다.

위도에 대해 음수 값을 사용하고 경도 값에 W를 사용하는 것을 고려해야합니다.
당신의 예제는 N과 E 좌표를 가지며, 양수 값으로 잘 작동합니다. 그러나 당신은 그것을 당연시 할 수 없습니다. 최소한 일반적인 해결책을 원한다면

위도 : 값이> 0이면 N이고, 그렇지 않으면 S입니다. 각도의 쉼표 값을 trunc하여 °를 추가 할 수 있습니다. 그런 다음 나머지를 가져 와서 60으로 곱하고 분으로 사용하고 th '를 더하십시오.

.145919 * 60 = 8.75514 -이 예의 경우 분 값입니다. N 61 ° 8.75514 '

귀하의 질문은 프로그래밍 문제와 관련이 없지만 오히려 수학 문제와 관련되어 있으므로 여기에서 나가도록하겠습니다.

0

코드

int degreesLat = marker.position.latitude; 
double decimalLat = fabs(marker.position.latitude-degreesLat); 
int minutesLat = decimalLat*60; 
double secondsLat = decimalLat*3600 - minutesLat*60; 
관련 문제