2012-05-25 3 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

Хорошо. Благодарим вас за консультацию. –

Смежные вопросы