2013-02-20 22 views
1

我正在創建一個基於位置的提醒,EKReminder創建基於位置的提醒:如何處理水平精度?

對於座標,我使用CLGeocoder將地址轉換爲CLLocation

當談到提醒本身時,我認爲有兩個因素決定了提醒將會觸發的'area'(radius/circle)。

1)CLLocation的水平精度。 該文檔將horizontalAccuracy屬性描述爲「位置的不確定性半徑,以米爲單位(只讀)」。

有前一個問題更多這方面的良好的信息: What do horizontalAccuracy and verticalAccuracy of a CLLocation refer to?

如該回答表明,該horizontalAccuracy爲100m。

2)財產EKStructuredLocation。有關此屬性的討論註釋請閱讀「要使用默認半徑,請將此屬性設置爲0」。

如果我在股票,蘋果的Reminders應用程序中創建一個基於位置的提醒,它將與radius = 0horizontalAccuracy = 0一起提供。因此,它使用默認的「提醒半徑」(不知道是什麼),其值爲0,表示水平位置的不確定性...

我想避免在提醒中出現兩個邊距。我認爲有兩個選項來實現這一點:

一)將其設置爲0使用的EKStructuredLocation默認radius轉換結果來從CLGeocoder回到有0米一horizontalAccuracy

B)保持horizontalAccuracy(100米,或不同的,取決於環境)從CLGeocoder - 但不是使用默認radiusEKStructuredLocation並將其設置爲小東西,像1米。

想法?我是否正確理解這些API?

  • 如果我使用返回的horizontalAccuracy和默認值爲radius,我會得到「雙倍餘量」嗎?
  • CLLocation對象的horizontalAccuracy對象是從座標引入一個半徑還是純粹提供關於位置不確定性的信息?

乾杯

+1

horizo​​ntalAccuracy是位置值的不確定性的估計值。 – progrmr 2013-02-20 16:01:08

回答

1

正如所指出的progmrhorizontalAccuracy是純粹的位置中的不確定性的估算。

來支持這一行動,我做了一對夫婦,其中真實測試:

  • 我的提醒應用程序,其中有radius = 0創建一個基於位置的提醒,但也報告horizontalAccuracy = 0
  • 我創造了我自己的代碼使用同一位置的提醒,設置radius = 0,但是從CLGeocoder返回報告horizontalAccuracy = 100

每個測試,在完全相同的陣地發射的提醒。 horizontalAccuracy純粹是爲了獲取信息。

相關問題