2009-09-08 9 views
8

Tôi đang phát triển ứng dụng GPS. Bạn có biết cách phát hiện tốc độ của thiết bị di động không?Tốc độ CLLocation

Thực ra, tôi cần phát hiện tốc độ sau mỗi 2 giây.

Tôi biết phương thức didUpdateToLocation được gọi khi thay đổi vị trí.

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 

Nhưng tôi nghĩ phương pháp này không phù hợp với vấn đề của tôi.

Vì vậy, tôi có cần kiểm tra tốc độ [CLLocationManager location] sau 2 giây không?

Bất kỳ đề xuất nào?

Xin cảm ơn trước.

Trả lời

26

Cách mã bên dưới hoạt động theo phương thức ủy nhiệm. Hoặc, nếu bạn muốn thăm dò ý kiến, hãy giữ vị trí trước đó của bạn và kiểm tra khoảng cách đã thay đổi từ cuộc thăm dò cuối cùng và sử dụng phương pháp thủ công (cũng được hiển thị bên dưới) để tính tốc độ.

Tốc độ được tính/cung cấp theo m/s sao cho nhân với 3,6 cho kmph hoặc 2,23693629 cho mph.

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    //simply get the speed provided by the phone from newLocation 
    double gpsSpeed = newLocation.speed; 

    // alternative manual method 
    if(oldLocation != nil) 
    { 
     CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation]; 
     NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp]; 
     double calculatedSpeed = distanceChange/sinceLastUpdate; 

    } 
} 
+5

Vì lợi ích tốt hơn trong hai tùy chọn (về độ chính xác)? –

+1

getDistanceFrom đã bị khấu hao. Thay thế CLLocationDistance distanceChange = [newLocation getDistanceFrom: oldLocation]; với CLLocationDistance distanceChange = [newLocation distanceFromLocation: oldLocation]; – Wes

0

Bạn chỉ có thể sử dụng phương thức ủy nhiệm mà bạn đã đề xuất trong câu hỏi của mình.

Ngay cả khi bạn truy cập [Vị trí quản lý vị trí CLL] 2 giây một lần, bạn sẽ chỉ nhận được toạ độ bạn nhận được cuối cùng trong phương thức đại biểu ở trên.

Tại sao cần phải thăm dò ý kiến ​​mỗi hai giây? IPhone có thể cập nhật tọa độ của nó trong thời gian ít hơn trên một số trường hợp.

HTH