1

現在、s である 2 つの座標間の距離を計算できますNSString

私は今、ある座標のリストを計算しようとしていますが、NSMutableArray立ち往生しています。
私はどういうわけかすべての間の距離を計算する必要がlocありますか、これを行うためのより良い方法はありますか?

for (int i=0; i < self.trackArray.count; i++)
{
    CGFloat latitude  = [[self.trackArray objectAtIndex:0] doubleValue];
    CGFloat longitude = [[self.trackArray objectAtIndex:1] doubleValue];

    CLLocation *loc = [[CLLocation alloc]  initWithLatitude:latitude longitude:longitude];

    CLLocationDistance distance = [loc distanceFromLocation:loc];
    CLLocationDistance kilometers = distance / 1000.0;
    self.distanceString = [NSString stringWithFormat:@"%f", kilometers];
}

アップデート。NSLog からアレイがどのように見えるかの例。

(
"37.335009,-122.032722",
"37.334977,-122.032813",
"37.334948,-122.032921",
"37.334922,-122.033042",
"37.334892,-122.033184",
"37.334858,-122.033344",
"37.334821,-122.033509",
"37.334780,-122.033696"
)

私がやろうとしていることを明確にしておらず申し訳ありません。私はユーザーの位置を追跡し、ユーザーの後ろに線を引くアプリを持っています。上記はユーザーから追跡された座標です。移動距離を見つけたいです。現在計算された距離です座標の最初の行と最後の行であるカラスフライのとおりです。たとえば、最初の 2 行の座標間の距離を計算し、その距離を次の 2 行の座標に追加します。したがって、ユーザーが円の中を歩く場合、距離を知りたいです。

4

1 に答える 1

3

これを試して:

-(void) test {
  CLLocationDistance totalKilometers = 0;
  for (int i = 0; i < (self.trackArray.count - 1); i++) // <-- count - 1
  {
     CLLocation *loc1 = [self cLLocationFromString:[self.trackArray objectAtIndex:i]];
     CLLocation *loc2 = [self cLLocationFromString:[self.trackArray objectAtIndex:(i + 1)]];

     CLLocationDistance distance = [loc1 distanceFromLocation:loc2];
     CLLocationDistance kilometers = distance / 1000.0;
     totalKilometers += kilometers;
  }
  self.distanceString = [NSString stringWithFormat:@"%f", totalKilometers];
}

-(CLLocation*) cLLocationFromString:(NSString*)string
{
    NSArray *coordinates = [string componentsSeparatedByString:@","];
    CGFloat latitude  = [[coordinates objectAtIndex:0] doubleValue];
    CGFloat longitude = [[coordinates objectAtIndex:1] doubleValue];
    return [[CLLocation alloc]  initWithLatitude:latitude longitude:longitude];
}
于 2014-03-17T16:16:11.423 に答える