我正在存储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#示例代码
另一个注意事项......这不需要任何用户界面显示...
我可以使用Lat / Lon ......然而,我使用哪种GPS坐标并不重要...... 重要的是可以在道路上行驶的MAP api功能 并确定一个点是否接近当前点。
由于
答案 0 :(得分:2)
使用谷歌地图API ..我想出来了:
以下是代码:
http://maps.googleapis.com/maps/api/directions/xml?origin=37.332829,-122.053389&destination=37.320885,-121.995869&waypoints=optimize:true|37.326531,-122.006750|37.334222,-122.037787|37.333721,-122.021086&sensor=false
以下是响应点的顺序:
<waypoint_index>1</waypoint_index>
<waypoint_index>2</waypoint_index>
<waypoint_index>0</waypoint_index>