我將GPS點與索引一起存儲 - 所以在這個問題中引用這些點時,它會看起來像這樣的GPS [0],GPS [1],其中GPS是GPS位置並且[n]是GPS位置陣列中的索引。沿着道路動態排序GPS點
這裏是我會如何被存儲的位置(在這個例子中該陣列只包含11個地點):
GPS [0] =道路的起點 - 總是在第一索引
GPS [ - 9]點以捕獲不是所有的[1:道路10] =端 - - 總是在最後一個索引
GPS [1 9] =道路的開始和結束
注之間的點在例如同一時間,例如GPS [1]和GPS [2]可能在星期一被捕獲,並且GPS [ 3]可能在週三被捕獲,GPS [4-9]可能在一個月後被捕獲。如果他們沒有被捕獲......他們被忽略。
此外,GPS位置可能會被「無序」捕獲......我所說的「無序」意思是,這些點是沿着道路捕獲的,但不一定與您遇到的順序相同當你從頭到尾走在路上。
這使我在我的算法問題:
(注「地圖API」是任何軟件/服務具有映射API)我要尋找的C#示例代碼
//--- is there a MAP API that does this?
Set CurrentPoint = MAP.api.FindPoint(GPSArray[0])
//--- is there a MAP API that does this?
Set EndPoint = MAP.api.FindPoint(GPSArray[10])
List<int> sequencedIndicies = new List<int>;
while (CurrentPoint != EndPoint)
{
// Is there a MAP API that will travel down the road from the current point
// X feet and set the current point to that location ?
CurrentPoint = MAP.api.TravelThisManyFeetDownRoad(CurrentPoint, 100)
// loop through my points and check them against the current road point
for(int i= 1; i<10; i++)
{
// Is there a MAP API function will take a point, a "current" point
// and tell if the point is within X feet of the current point
//
// (alternatively I could use Haversine function if map api does not exist)
//
if(MAP.api.IsNear(CurrentPoint, GPSArray[i], 50)) <--- need this too
{
sequencedIndicies.Add(i);
break;
}
}
}
// move the GPS points to the new sequenced order
ReindexGPSArray(GPSArray, sequenceIndicies)
該交易與地圖API的功能
另一注...這不需要任何用戶界面顯示...
我可以用緯度/經度......然而,GPS合作我使用的座標並不重要...... 重要的是MAP MAP API函數可以沿着道路行進並確定點是否接近當前點。
感謝
'GPS'的類型是什麼?它是一個Vector2數組嗎?一個Vector3數組?一個'octopus'類型的數組?它是什麼樣的「點」?緯度/經度? (X,Y)?您可以根據距離原點對您的GPS陣列進行排序。請參閱此問題以計算距離:http://stackoverflow.com/questions/6366408/calculating-distance-between-two-latitude-and-longitude-geocoordinates – arao6
查看編輯的問題 – user3174075
查看Google Maps API:https:// developers.google.com/maps/documentation/directions/您可以爲'GPS'數組中的點設置'航點'。您可以使用返回的多段線循環遍歷點,每遍迭代傳播X距離,然後檢查是否存在'GeoCoordinate.GetDistanceTo()'<50。如果它<50,則可以將該點添加到'sequencedIndicies'。如果您使用該數組作爲新的航點,Google將返回具有正確點數的排序數組。 – arao6