2013-03-20 119 views
0

給定一條路徑說從開始到目標有限數量的CLLocation點(猜測在100左右)1000米長。假設用戶在路徑上的某個位置以及來自iOS位置服務的CLLocation,計算沿路線上最近點的最佳方法是什麼?尋找最近點的路徑向前

使用-[CLLocation distanceFromLocation:]找到最近的點很容易,但當用戶通過一個點並向下一個點移動時,前一個點仍然是最近的點,直到他經過上一個點和下一個點之間的中點。

回答

0

您可以保留一個由排序(從路徑開始到結尾)CLLocation點(假設爲100)組成的數組,並且只評估那些位置以找到最近要訪問的位置。要找到訪問點,您需要保留起始位置並確定從開始位置到用戶當前位置的距離(d1)。如果d1>從排序數組開始到下一個點的距離,並且當前位置在附近(10 - 100 m),則排序數組中的下一個點將移除該點,否則用戶沒有訪問/通過該位置,以便保留它在排序的數組中。

+0

我已經有了所有路徑點的數組,但是如何知道用戶是否訪問或傳遞了一個?路徑點和實際用戶位置最多隻能靠近,而不能完全匹配。 – sjur 2013-03-20 13:08:26

+0

實際上,那是我已經擁有的實現(只是顛倒過來,而不是向前看),但是有一個bug。似乎現在工作得很好。不管怎麼說,還是要謝謝你 :) – sjur 2013-03-21 21:35:13