【问题标题】:How can I get a speeding profile using Here Maps Route Matching API?如何使用 Here Maps Route Matching API 获取超速配置文件?
【发布时间】:2022-11-14 20:38:14
【问题描述】:

我们正在使用 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=fastest;truck;traffic:disabled&routeAttributes=mo,wp,sm,fl,sp,sc&drivingReport=1&apiKey=whatever&alignToGpsTime=0&legAttributes=mn&linkAttributes=ma

我们尝试使用每个链接的剩余时间和剩余距离属性来计算每个链接的速度,但结果与原始跟踪点不相关。

这是计算路线超速曲线的正确方法吗?

【问题讨论】:

    标签: here-api heremaps here-maps-rest


    【解决方案1】:

    请参考以下代码获取沿线限速,更详细的代码在example

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-03
      • 2019-01-14
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多