OpenLayers:与gpx保持距离

时间:2014-05-15 10:46:11

标签: javascript openlayers openstreetmap

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

我的要求是获得路线的距离。我怎样才能实现这一目标?

请帮忙, 感谢。

1 个答案:

答案 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。