javascript - OpenLayers:从 gpx 获取距离

标签 javascript openlayers openstreetmap

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

我的要求是获取路线的距离。我怎样才能做到这一点?

请帮忙, 谢谢。

最佳答案

基本上,GPX 是一个 XML 文件,定义了一组 Track Segment,其中包含按逻辑顺序连接的 Track Point 列表。

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

请注意 Track Segment 不是逻辑连接的事实。

使用 DOM 解析 GPX 非常简单。

此代码摘自使用多年的库。 这里是sample我在哪里使用它。

希望对您有所帮助。 G.

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

相关文章:

javascript - 使用 Modernizr.load 在 Rails 3.2 中加载资源

javascript - 在 OpenLayers OSM() map 上添加三 Angular 形多边形

当我在 Ubuntu 16.04 上下载大文件 (40GB) 时,Docker 构建崩溃

javascript - 使用 Leaflet.js 和 OSM 时仅显示美国

javascript - 获取坐标事件 map openlayers 4.6.5 ~ 5

android - 如何在 React Native 中离线使用谷歌地图

javascript - 尝试读取样式表返回未定义

javascript - 为什么 Jest 的 Expect 中的字符串比较不会失败?

javascript - anchor 标记在 JavaScript 中不起作用

Openlayers 3 文档