Я сохраняю 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
другое примечание... это не требует отображения пользовательского интерфейса...
Я могу использовать Lat/Lon... однако, какие координаты GPS, которые я использую, не так важны... Важно, что функциональность MAP api, которая может перемещаться по дороге и определять, находится ли точка близко к текущей точке или нет,
благодаря
Используя API карт Google.. Я понял:
Вот код:
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>