سؤال

أتذكر القراءة في مكان ما (أنسى أين) أنه إذا قام تطبيق iPhone بتشغيل CllocationManager مرة واحدة ، فإنه لم يأت بالنتائج الأكثر دقة.

هل هذا دقيق ، وإذا كان الأمر كذلك ، كيف يمكنني مكافحة هذه المشكلة؟ أريد أن أتوصل إلى نتائج GPS الأكثر دقة ، وأتساءل عما إذا كان مرة واحدة فقط ستنشئ أفضل النتائج.

شكرا على اي مساعدة!

هل كانت مفيدة؟

المحلول

CLLocationManager *locationManager.desiredAccuracy = kCLLocationAccuracyBest;

سيعود أفضل نتيجة ممكنة لك. طريقة المندوب

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

ستستمر في إرجاع موقع المستخدم بناءً على تفضيلات الدقة التي حددتها.

إذا كنت بحاجة فقط إلى الموقع مرة واحدة ، فأنت بحاجة إلى تذكر الاتصال stopUpdatingLocation على self. إذا كنت بحاجة إلى تحديث موقع المستخدم بشكل مستمر ، فلا تتصل stopUpdatingLocation

أنا أستخدم Corelocation للحصول على موقع المستخدم ، وهو دقيق تمامًا لاستخدامي.

نصائح أخرى

ما تقرأه كان من المحتمل من دليل برمجة تطبيق iPhone:

لاسترداد الموقع الحالي للمستخدم ، قم بإنشاء مثيل لفئة CllocationManager وتكوينه بدقة ودقة مرغوبة. للبدء في استلام إشعارات الموقع ، قم بتعيين مندوب للكائن واتصل طريقة StartuPdatingLocation لبدء تحديد موقع المستخدم الحالي. عند توفر بيانات الموقع الجديدة ، يقوم مدير الموقع بإخطار كائن المندوب المعين. إذا تم بالفعل تسليم تحديث الموقع ، فيمكنك أيضًا الحصول على أحدث بيانات الموقع مباشرة من كائن CllocationManager دون انتظار تسليم حدث جديد.

[...]

يوصى بالتحقق من الطابع الزمني للحدث لأن خدمة الموقع غالبًا ما تُرجع حدث الموقع المخحي مؤقتًا على الفور. قد يستغرق الأمر عدة ثوان للحصول على إصلاح موقع خشن ، بحيث تعمل البيانات القديمة ببساطة كوسيلة لتعكس الموقع المعروف الأخير. يمكنك أيضًا استخدام الدقة كوسيلة لتحديد ما إذا كنت تريد قبول حدث ما. نظرًا لأنها تتلقى بيانات أكثر دقة ، قد تُرجع خدمة الموقع أحداثًا إضافية ، مع وجود قيم الدقة التي تعكس التحسينات وفقًا لذلك.

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