0
「OpenLayers方法沒有特別好記錄」有人說,這就是爲什麼我無法理解如何讀取gpx中的'ele'數據文件,總結它,並顯示獲得的高度。OpenLayers:解析GPX文件,讀取'ele'標籤並計算獲得的高度
我有一個帶有2個gpx圖層的地圖,顯示了運行軌跡,其中一個div顯示了運行和控件的開關長度。下面是一層:
var lgpx = new OpenLayers.Layer.Vector("wed training fast", {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "../gpx/27-Mar-13fast.gpx",
format: new OpenLayers.Format.GPX({
extractWaypoints: true, extractRoutes: true,
extractAttributes: true})
}),
styleMap: gpxStyles,
projection: new OpenLayers.Projection("EPSG:4326")
});
map.addLayer(lgpx); //fast
bounds = new OpenLayers.Bounds();
// fit fast layer to bounds of window and add start, finish pins
lgpx.events.register("loadend", lgpx, function() {
//add extent of layer to bounds
bounds = this.getDataExtent();
//add startpoint marker
var startPoint = this.features[0].geometry.components[0];
layerMarkers.addMarker(new OpenLayers.Marker
(new OpenLayers.LonLat(startPoint.x, startPoint.y),iconfast));
//add endpoint marker
var endPoint=this.features[0].geometry.components
[this.features[0].geometry.components.length-1];
layerMarkers.addMarker(new OpenLayers.Marker
(new OpenLayers.LonLat(endPoint.x, endPoint.y),iconfast2));
//calculate length of trace
var len = this.features[0].geometry.getGeodesicLength
(new OpenLayers.Projection("EPSG:900913"))/1000 + " k";
(Math.round(value*100)/100).toFixed(2);
var kms = +(parseFloat(len).toFixed(2));
var m = +(parseFloat(kms*0.621371).toFixed(2));
//write the result to the page
document.getElementById("fastbox").innerHTML=
"Fast run <strong>——————
</strong> " + m +" miles" +" (" +kms + "k)";
});
唷在幾秒鐘的時間,我必須說,我也很討厭的OpenLayers文檔,雖然我愛的框架,我沒有GPX文件試試看。我會用螢火蟲檢查它。根據http://dev.openlayers.org/docs/files/OpenLayers/Format/GPX-js.html(給你一個方向),我會考慮尋找lgpx.geometry.getVertices()並遍歷數組。它應該給你從gpx文件的每個點的高度 –
給我一般指針是沒有好處的!如果我可以編寫代碼,我可以從API中派生出代碼。我可以看到我應該遍歷一個數組,並且大概總結了標籤之間的連續差異。但我不能寫代碼。我一直搜索,直到我臉上發青,我找不到任何例子。 getLength非常簡單,但沒有相應的方法來獲得高度。 –