2012-01-11 38 views
11

Tôi thực sự đang cố tính khoảng cách giữa điểm cực đại và điểm cực trong tọa độ x và y cho số MKMapPoints.Tại sao MKMetersBetweenMapPoints cho tôi kết quả khác nhau khi tôi trao đổi các tham số?

Đối với đó, tôi đang làm điều này (tối đa khoảng cách trong trục y):

MKMapPoint test1, test2; 
double dist; 
test1.x = 0.0; 
test1.y = 0.0; 
test2.x = 0.0; 
test2.y = MKMapSizeWorld.height; 
dist = MKMetersBetweenMapPoints(test2, test1); 
NSLog(@"Distance %f",dist); 

tôi nhận được 18.997.878,291251 trong giao diện điều khiển. Nhưng khi tôi thay đổi phép tính khoảng cách thành:

dist = MKMetersBetweenMapPoints(test1, test2); 

Tôi nhận được 18873651.664238, vì vậy tôi không hiểu sự khác biệt là gì. Tôi thậm chí không biết nếu tôi đang làm điều đúng để có được giá trị tối đa của khoảng cách trong trục x và y.

Mọi trợ giúp sẽ được đánh giá cao.

+1

liên quan: http://stackoverflow.com/questions/5558854/order-of-cllocation-objects-in-distancefromlocation – Anna

+0

nên dòng đăng nhập là NSLog (@ "Khoảng cách% f", khoảng cách); – Damo

+0

xin lỗi, là lỗi đánh máy. Tên biến là dist. (Đã sửa) – FranciscoAlexis

Trả lời

4

Tôi đoán đó là vấn đề về thuật toán. Một số loại xấp xỉ dừng lại khi đạt được độ chính xác nhất định. Đó là lý do tại sao không có giao hoán ở đó. Bạn có thể thử mẫu mã để có được khoảng cách giữa hai điểm trên bản đồ mà không cần sử dụng MKMapPoints:

- (float) distanceToLPU { 

     useDelegate 

     CLLocationCoordinate2D pointACoordinate = appDelegate.usrLoc; 
     CLLocation *pointALocation = [[CLLocation alloc] initWithLatitude:pointACoordinate.latitude longitude:pointACoordinate.longitude]; 

     CLLocationCoordinate2D pointBCoordinate; 
     pointBCoordinate.latitude = [self.latitude doubleValue]; 
     pointBCoordinate.longitude = [self.longitude doubleValue]; 

     CLLocation *pointBLocation = [[CLLocation alloc] initWithLatitude:pointBCoordinate.latitude longitude:pointBCoordinate.longitude]; 

     float distanceMeters = [pointALocation distanceFromLocation:pointBLocation]; 

     [pointALocation release]; 
     [pointBLocation release]; 

     NSString *dist = [NSString stringWithFormat:@" (%.0f м)", distanceMeters]; 
     NSLog(@"Distance to this LPU:%@", dist); 

     return distanceMeters; 
    } 
Các vấn đề liên quan