代码之家  ›  专栏  ›  技术社区  ›  Veeru

iphone;使用mapkit处理纬度/经度十进制值

  •  1
  • Veeru  · 技术社区  · 14 年前

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

    我使用

    [defaults setObject:[NSString stringWithFormat:@"%.9lf",location.coordinate.latitude]  forKey:@"lastKnownLat"];
    

    但是这个位置的十进制值当然不精确,可能是3.123456789或3.12345-在后面的例子中,这个值被转换成3.123459999,我认为它在地图上给出了错误的位置。

    我怎样才能避免这种情况? 存储纬度/经度值并将其显示在地图上的最佳方法是什么? 在mapkit中,3.12345和3.12345999之间会有很大的差别吗?

    谢谢

    2 回复  |  直到 14 年前
        1
  •  4
  •   Justin Spahr-Summers    14 年前

    NSUserDefaults 具有专门用于保存浮点值的方法,并且可以使用 setDouble:forKey: 尽可能保持精确。

        2
  •  0
  •   squeezemylime    14 年前

    存储数据本身的最佳方法可以是通过核心数据或sqlite,但是要有您想要使用的最精确的数据 kCLLocationAccuracyBest公司 . 请参见下文(refreshLoc是我的CLLocationManager变量)。

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