答案 0 :(得分:3)
基本上,GPX是一个XML文件,它定义了一组Track Segment,它包含一个按顺序逻辑连接的Track Points列表。
<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。