تطوير iPhone - دقة الموقع
-
27-09-2019 - |
سؤال
أنا أستخدم الشروط التالية في الطلب للتأكد من أن الموقع الذي أحصل عليه لديه دقة كافية ، في حالتي KCllocationAccuracyBest. لكن المشكلة هي أنني ما زلت أحصل على موقع غير دقيق.
// Filter out nil locations
if(!newLocation)
return;
// Make sure that the location returned has the desired accuracy
if(newLocation.horizontalAccuracy < manager.desiredAccuracy)
return;
// Filter out points that are out of order
if([newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp] < 0)
return;
// Filter out points created before the manager was initialized
NSTimeInterval secondsSinceManagerStarted = [newLocation.timestamp timeIntervalSinceDate:locationManagerStartDate];
if(secondsSinceManagerStarted < 0)
return;
// Also, make sure that the cached location was not returned by the CLLocationManager (it's current) - Check for 5 seconds difference
if([newLocation.timestamp timeIntervalSinceReferenceDate] < [[NSDate date] timeIntervalSinceReferenceDate] - 5)
return;
عندما أقوم بتنشيط GPS ، أحصل على نتائج غير دقيقة قبل أن أحصل على نتيجة دقيقة بالفعل. ما هي الطرق التي تستخدمها للحصول على معلومات دقيقة/دقيقة؟
المحلول 2
السبب الرئيسي الذي دفعني إلى الحصول على نتائج غير دقيقة كان بسبب هذا الشرط:
if(newLocation.horizontalAccuracy < manager.desiredAccuracy)
كنت أستخدم kCLLocationAccuracyBest
كما هو مرغوب فيه وهو رقم سالب. يجب ألا تستخدمه للمقارنة.
المحلول:if(newLocation.horizontalAccuracy < 10.0)
نصائح أخرى
يكون GPS بطيئًا ، على الأقل مقارنةً بصبر المستخدم ، وبالتالي فإن مدير الموقع يعيد أفضل ما لديه حتى يحصل على قراءة GPS جديدة صالحة. يمكنك إما جعل المستخدم ينتظر ، ولكن يستغرق الأمر وقتًا طويلاً للحصول على قراءة دقيقة ، أو الحصول على نوع من التعليقات الإضافية بالطريقة التي تعمل بها خرائط Google ، مع دائرة من النقطة.