苹果手机;使用mapkit处理纬度/经度十进制值

时间:2010-11-29 03:23:47

标签: iphone objective-c cocoa-touch geolocation

大家好 我需要帮助处理与xcode的位置坐标;确切地说,转换。 我有CLLocation对象,它使用手机的地理位置接收lat和long,工作正常。但我在处理转换时遇到问题。

我使用

将lat和long值存储在userdefaults中
[defaults setObject:[NSString stringWithFormat:@"%.9lf",location.coordinate.latitude]  forKey:@"lastKnownLat"];

但该位置的十进制值是不精确的,它可能是3.123456789或3.12345 - 在后一种情况下,该值转换为3.123459999,我认为这在地图上给出了错误的定位。

我该如何避免这种情况? 什么是存储lat / long值并在地图上显示它们的最佳方法? 在mapkit中,它会在3.12345和3.12345999之间产生很大差异吗?

由于

2 个答案:

答案 0 :(得分:4)

NSUserDefaults具有专门用于保存浮点值的方法,您可以使用setDouble:forKey:来保持尽可能高的精度。

答案 1 :(得分:0)

存储数据本身的最佳方式可能是通过Core Data或sqlite,但要获得最准确的数据 kCLLocationAccuracyBest 。见下文(refreshLoc是我的CLLocationManager变量)。

refreshLoc = [[CLLocationManager alloc] init];
refreshLoc.delegate = self;
refreshLoc.desiredAccuracy = kCLLocationAccuracyBest;
refreshLoc.distanceFilter = kCLDistanceFilterNone;
[refreshLoc startUpdatingLocation];