如何使用Here Maps Route Matching API获取速度配置文件



我们使用的是Here MapsRoute Matching API(https://developer.here.com/documentation/route-matching/dev_guide/index.html)以基于许多迹线点来计算最合理的路线。我们使用POST端点,并以GeoJSON格式传递跟踪点,包括每个点的坐标、时间戳和速度值。

我们想得到沿途每个路段的车辆(估计(速度。

这是我们向API请求的一个示例:https://routematching.hereapi.com/v8/calculateroute.json?routeMatch=1&mode=最快;卡车流量:禁用&routeAttributes=mo,wp,sm,fl,sp,sc&drivingReport=1&apiKey=任意&alignToGpsTime=0&legAttributes=mn&linkAttributes=ma

我们试图使用每个链路的剩余时间和剩余距离属性来计算每个链路上的速度,但结果与原始轨迹点不相关。

这是计算一条路线的速度剖面的正确方法吗?

请参阅以下代码以获取路线的限速,示例中提供了更详细的代码。

function GPXParser(xmlDoc, map,  draw)
{
this.xmlDoc = xmlDoc;
this.map = map;
this.trackcolor = "#ff00ff";
this.markercolor = "ff00ff";
this.trackwidth = 5;
this.mintrackpointdelta = 0.0001;
this.objectContainer = new H.map.Group();
this.pointsWithSpeed = [];
if(draw)
this.map.addObjects(this.objectContainer);
}

var speed = 0;

var tmp = trackpoints[0].getElementsByTagName("speed")[0];
if(tmp && tmp.length != 0)
speed = tmp.childNodes[0].nodeValue;
speed = parseFloat(speed);
var heading = -1;
tmp = trackpoints[0].getElementsByTagName("course")[0];
if(tmp)
heading = tmp.childNodes[0].nodeValue;
heading = parseFloat(heading);
if(heading > 0)
this.pointsWithSpeed.push({coord: latlng, speed: speed, heading: heading});
else
this.pointsWithSpeed.push({coord: latlng, speed: speed});
for (var i=1; i < trackpoints.length; i++)
{
var lon = parseFloat(trackpoints[i].getAttribute("lon"));
var lat = parseFloat(trackpoints[i].getAttribute("lat"));
speed = 0;
tmp = trackpoints[i].getElementsByTagName("speed")[0];
if(tmp && tmp.length != 0)
speed = tmp.childNodes[0].nodeValue;
speed = parseFloat(speed);

if(heading > 0)
this.pointsWithSpeed.push({coord: latlng, speed: speed, heading: heading});
else
this.pointsWithSpeed.push({coord: latlng, speed: speed});
this.objectContainer.addObject(polyline);
lastlon = lon;
lastlat = lat;
}
}
}
GPXParser.prototype.GetPointsWithSpeed = function()
{
return this.pointsWithSpeed;
}

最新更新