سؤال

أنا أستخدم الشروط التالية في الطلب للتأكد من أن الموقع الذي أحصل عليه لديه دقة كافية ، في حالتي 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 ، مع دائرة من النقطة.

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