我将 GPS 点与索引一起存储——所以要在这个问题中引用这些点,它看起来像这样 GPS[0]、GPS[1],其中 GPS 是 GPS 位置,[n] 是GPS 位置数组。
以下是我将如何存储位置(在此示例中,数组仅包含 11 个位置):
GPS[0] = 道路起点 - 始终位于第一个索引处
GPS[10] = 路尽头 - 总是在最后一个索引处
GPS[ 1 - 9 ] = 道路起点和终点之间的点
注意:并非所有 [1 - 9] 点都被同时捕获,例如 GPS[1] 和 GPS[2] 可能在星期一捕获,GPS[3] 可能在星期三捕获,GPS[4 - 9]一个月后可能会被捕获。如果他们没有被捕获......他们会被忽略。
此外,GPS 位置可能被“乱序”捕获......我所说的“乱序”是指沿道路捕获点,但不一定按照您在旅行时遇到的相同顺序从头到尾的路上。
这导致我在算法中遇到问题:
(注意“MAP API”是任何具有映射 API 的软件/服务)
//--- 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 )
我正在寻找处理 MAP api 功能的 C# 示例代码
另一个注意事项...这不需要任何用户界面显示...
我可以使用纬度/经度...但是,我使用的 GPS 坐标并不那么重要...重要的是 MAP api 功能可以沿着道路行驶并确定一个点是否接近当前点.
谢谢