CLLocation السرعة
-
21-09-2019 - |
سؤال
أنا النامية تطبيق نظام تحديد المواقع.هل تعرف حول كيفية الكشف عن سرعة جهاز محمول ؟
في الحقيقة أنا بحاجة إلى الكشف عن سرعة كل 2 ثانية.
أعلم didUpdateToLocation
الطريقة تسمى عند موقع تغيير.
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
ولكن أعتقد أن هذه الطريقة ليست مناسبة بالنسبة لي المسألة.
لذا هل أنا بحاجة إلى التحقق من سرعة [CLLocationManager location]
في 2 ثانية ؟
أي اقتراح ؟
شكرا مقدما.
المحلول
ماذا عن الكود أدناه الذي يعمل من طريقة المندوب. بدلاً من ذلك ، إذا كنت ترغب في الاستطلاع ، فاحتفظ بموقعك السابق وتحقق من المسافة التي تم تغييرها من الاستطلاع الأخير واستخدم الطريقة اليدوية (الموضحة أيضًا أدناه) لحساب السرعة.
يتم حساب السرعة/توفيرها في m/s ، لذا اضرب 3.6 ل KMPH أو 2.23693629 لـ 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;
}
}
نصائح أخرى
يمكنك فقط استخدام مندوب الطريقة كنت قد اقترحت في سؤالك.
حتى إذا كان الوصول إلى [CLLocationManager موقع] كل 2 ثانية ، سوف تتلقى فقط تنسيق آخر الواردة في تفويض الأسلوب أعلاه.
لماذا الحاجة إلى الاستطلاع كل ثانيتين ؟ اي فون يمكن تحديث الإحداثيات في وقت أقل في بعض الحالات.
HTH