使用GPS地图如何计算两点之间的距离

时间:2011-08-26 07:33:08

标签: iphone gps

  

可能重复:
  GPS coordinates in degrees to calculate distances

使用GPS我知道字符串字符串如何分隔字符串中的纬度和经度< +37.33168900,-122.03073100> +/- 100.00m(速度-1.00 mp /航向-1.00)@ 2011-08-26 12:56:57 +0530

当我调用位置管理器时,这个方法称为

// Delegate method from the CLLocationManagerDelegate protocol.
- (void)locationManager:(CLLocationManager *)manage didUpdateToLocation:(CLLocation    *)newLocation fromLocation:(CLLocation *)oldLocation
{
   NSLog@("%@",newLocation) //<+37.33168900, -122.03073100> +/- 100.00m (speed -1.00 mp / course -1.00) @ 2011-08-26 12:56:57 +0530

   NSLog@("%@",oldLocation) //null
}

我的问题是如何保存我的旧位置以及如何使用newlocation和oldlocation如何计算我搜索谷歌的距离,但我找不到请帮助我。我非常努力如何保存oldLocation。

3 个答案:

答案 0 :(得分:1)

您可以使用- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

为了保存这两个位置,您应该使用属性。

答案 1 :(得分:0)

如果你想从字符串<+37.33168900, -122.03073100> +/- 100.00m (speed -1.00 mp / course -1.00) @ 2011-08-26 12:56:57 +0530获得纬度和经度,你可以通过在第一个&lt;中找到它来获得正则表达式。 &GT;并用逗号分隔。如果您想以这种方式执行此操作,那么如何做到这一点,但SDK可为您提供更方便的阅读Location Awareness Programming Guide以获取更多信息。

答案 2 :(得分:0)

每当您开始观察您的位置时,此方法的第一次调用可能具有null的oldLocation。仅仅因为你的iPhone不知道它以前在哪里。

如果您在应用中多次开始和停止更新您的位置,并且您仍想知道最后一个位置是什么,只需保留一个代表您的oldLocation的静态对象,并在收到委托调用后更新它。

static CLLocation * myLastLocation;

- (void)locationManager:(CLLocationManager *)manage didUpdateToLocation:(CLLocation*) newLocation fromLocation:(CLLocation *)oldLocation
{
     NSLog@("Working with the new location: %@",newLocation); 

     // Save it as the old location
     myLastLocation = newLocation;

     // Your problem still exists that the first call will have myLastLocation == nil!
}
相关问题