如何格式化这样的坐标



我需要像这样格式化我的坐标:

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];   
}

这个现有的问题似乎有关于如何最好地解决的建议,以及一个可以为你做到这一点的库:将十进制坐标转换为度,分,秒,方向

没那么容易。

在您的示例中,您有北纬 61 度和 14.5919 分钟,没有秒。(秒由分钟中的小数表示。

您必须将分钟转换为厘米。

61 + 14.5919/60 将产生 61.31983 。

您必须考虑 S 对纬度的负值,以及 W 对经度的负值。
您的示例恰好具有 N 和 E 坐标,适用于正值。但你不能认为这是理所当然的。如果你想要一些通用的解决方案,至少不会。

所以对于纬度:如果值为>= 0,则为 N,否则为 S。您可以截断度数的逗号后值并添加 °。然后取余数并将其乘以 60 并将其用作分钟并添加 th'。

.145919 * 60 = 8.75514 - 这是此示例中的分钟值。它应该导致N 61° 8.75514'

由于您的问题与编程问题无关,而是与背后的数学有关,因此我将让您从那里开始。

请参考以下代码

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

最新更新