CLLocationスピード
-
21-09-2019 - |
質問
私は、GPSアプリケーションを開発しています。 あなたは、モバイルデバイスの速度を検出する方法について知っていますか?
実は、私は2秒ごとに速度を検出する必要があります。
私が知っているの didUpdateToLocation
の場所が変更されたときにメソッドが呼び出されます。
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
しかし、私は、この方法は、私の問題に適していないと思います。
だから、2秒で[CLLocationManager location]
の速度をチェックするために行うIの必要性?
任意の提案?
事前に感謝します。
解決
どのようにデリゲートメソッドから働くそれ以下のコードについて。 また、あなたが投票したいをした場合、その後、あなたの前の位置を維持し、最後のポーリングから変更距離をチェックして、速度を計算するために手動による方法(下記に示す)を使用します。
は速度が計算される/ Mに設け/ MPHためkmph 3.6又は2.23693629によって乗算そうだ。
-(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;
}
}
他のヒント
あなたが唯一本当にあなたがあなたの質問に示唆されているデリゲートメソッドを使用することができます。
あなたは2秒ごとに[CLLocationManagerの場所]にアクセスしても、あなただけが最後上記のデリゲートメソッドで受信した座標受け取ることになります。
2秒ごとにポーリングするのはなぜ必要? iphoneは、いくつかのケースに短い時間での座標を更新することができます。
HTH
所属していません StackOverflow