X-Git-Url: https://dev.renevier.net/?p=syj.git;a=blobdiff_plain;f=public%2Fjs%2Fsyj.js;fp=public%2Fjs%2Fsyj.js;h=8f5f509020fd0f6251055213aa3d050169f963fe;hp=7864fe9309575aa371e0109b49bc78816c6a82de;hb=7504b7ccb77a798b20f4dbb003a90bcaee702124;hpb=150c38ebcad7e451aca5350cf5c8047d65a3af72 diff --git a/public/js/syj.js b/public/js/syj.js index 7864fe9..8f5f509 100644 --- a/public/js/syj.js +++ b/public/js/syj.js @@ -372,7 +372,7 @@ var SYJView = { this.messenger.setMessage(SyjStrings.uploadFileError, "warn"); }.bind(this); reader.onload = function(evt) { - var data = null, results = null, engine = null, vector = null, i = 0, formats = ['KML', 'GPX', 'GeoJSON']; + var data = null, results = null, engine = null, vector = null, i = 0, format = null, formats = ['KML', 'GPX', 'GeoJSON']; $("geom_upload_container").removeClassName("disabled"); $("geom_upload").disabled = false; @@ -383,7 +383,8 @@ var SYJView = { data = evt.target.result; for (i = 0; i < formats.length; i++) { - engine = new OpenLayers.Format[formats[i]]({ internalProjection: Mercator, externalProjection: WGS84 }); + format = formats[i]; + engine = new OpenLayers.Format[format]({ internalProjection: Mercator, externalProjection: WGS84 }); try { results = engine.read(data); } catch(e) { @@ -402,6 +403,12 @@ var SYJView = { readerror(); return; } + // merge linestrings for gpx containting multiple trkseg elements. + if (format === 'GPX') { + for (i = 1; i < results.length; i++) { + vector.geometry.addComponents(results[i].geometry.components); + } + } this.viewLayer.addFeatures([vector]); this.map.zoomToExtent(this.viewLayer.getDataExtent());