2012-05-25 77 views
0

嘗試計算與註釋的距離,但由於某些原因無法獲取註釋座標。我從plist加載註釋。無法計算到註釋的距離

CLLocationCoordinate2D annocoord = myAnnotation.coordinate; 
     CLLocationCoordinate2D usercoord = self.mapView.userLocation.coordinate; 

     NSLog(@"ANNO = %f, %f", annocoord.latitude, annocoord.longitude); 
     NSLog(@"USER = %f, %f", usercoord.latitude, usercoord.longitude); 

     CLLocation *loc = [[CLLocation alloc] initWithLatitude:myAnnotation.coordinate.latitude longitude:myAnnotation.coordinate.longitude]; 
     CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:self.mapView.userLocation.coordinate.latitude longitude:self.mapView.userLocation.coordinate.longitude]; 

     NSLog(@"LOC = %f, %f", loc.coordinate.latitude, loc.coordinate.longitude); 
     NSLog(@"LOC2 = %f, %f", loc2.coordinate.latitude, loc2.coordinate.longitude); 

     CLLocationDistance dist = [loc distanceFromLocation:loc2]; 

     NSLog(@"DIST: %f", dist); 

登錄:

ANNO = 0.000000, 0.000000 
USER = 60.492631, 22.258933 
LOC = 0.000000, 0.000000 
LOC2 = 60.492631, 22.258933 
DIST: 6999960.693412 

回答

0
-(CGFloat)distanceBetweenTwoPoints:(CGPoint)firstP secondPoint:(CGPoint)secondP{ 

    CGFloat distance = sqrtf(powf((secondP.y - firstP.y), 2.0) + powf((secondP.x - firstP.x), 2.0)); 

    return distance; 

} 

使用此代碼,找出兩點之間的距離。

+0

請注意,此方法只能用於較小的距離,如果您在長距離工作,則必須使用一些更復雜的公式(在'distanceFromLocation'中實現)來處理地球圓度,因爲您在2D計劃中工作。 – CitronEvanescent

+0

好的。謝謝你的建議 –