سؤال

أنا النامية تطبيق نظام تحديد المواقع.هل تعرف حول كيفية الكشف عن سرعة جهاز محمول ؟

في الحقيقة أنا بحاجة إلى الكشف عن سرعة كل 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top