我有一个gpx文件。我正在使用OpenLayers和this example将其显示在OSM上。

我的要求是获取路线的距离。我该如何实现?

请帮忙,
谢谢。

最佳答案

基本上,GPX是一个XML文件,它定义了一组“轨迹段”,其中包含一系列按顺序逻辑连接的轨迹点。

<trkseg>
     <trkpt lat='float' lon='float'/>
     <trkpt lat='float' lon='float'/>
     <trkpt lat='float' lon='float'/>
...
</trkseg>


您所需要做的就是使用点到点的距离来计算所有轨道段的长度(这些点包含经度和纬度)
点到点的距离将使用以下公式计算:

var radius = 6378137.0 ; // earth radius in meter
var DE2RA = 0.01745329252; // degre to radian conversion

// return the distance between (lat1,lon1) and (lat2,lon2) in meter.
GCDistance= function (lat1, lon1, lat2, lon2) {
    if (lat1 == lat2 && lon1 == lon2) return 0;
    lat1 *= DE2RA;
    lon1 *= DE2RA;
    lat2 *= DE2RA;
    lon2 *= DE2RA;
    var d = Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon1 - lon2);
    return (radius * Math.acos(d));
};


请注意,“轨迹段”不是逻辑连接的事实。

使用DOM解析GPX很简单。

此代码是从使用了多年的lib中提取的。
这是我使用它的位置的sample

希望能有所帮助。
G。

关于javascript - OpenLayers:获取距gpx的距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23676026/

10-09 15:04