Skip to content

Commit

Permalink
Merge pull request #4 from aurmil/routes
Browse files Browse the repository at this point in the history
Add routes support
  • Loading branch information
peplin committed Apr 1, 2017
2 parents e862945 + a63c502 commit e29f890
Show file tree
Hide file tree
Showing 4 changed files with 147 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.mkd
Expand Up @@ -65,6 +65,7 @@ should do the trick:
parser.setMinTrackPointDelta(0.001); // Set the minimum distance between track points
parser.centerAndZoom(data);
parser.addTrackpointsToMap(); // Add the trackpoints
parser.addRoutepointsToMap(); // Add the routepoints
parser.addWaypointsToMap(); // Add the waypoints
}
});
Expand Down
1 change: 1 addition & 0 deletions examples/gpxviewer/gpxviewer.html
Expand Up @@ -32,6 +32,7 @@
parser.setMinTrackPointDelta(0.001); // Set the minimum distance between track points
parser.centerAndZoom(data);
parser.addTrackpointsToMap(); // Add the trackpoints
parser.addRoutepointsToMap(); // Add the routepoints
parser.addWaypointsToMap(); // Add the waypoints
}
});
Expand Down
95 changes: 95 additions & 0 deletions examples/gpxviewer/pocotrail.xml
Expand Up @@ -1686,4 +1686,99 @@
</trkpt>
</trkseg>
</trk>
<rte>
<name>Annecy Test Route</name>
<rtept lat="45.90257" lon="6.1341"></rtept>
<rtept lat="45.90115" lon="6.12898"></rtept>
<rtept lat="45.90141" lon="6.12877"></rtept>
<rtept lat="45.90141" lon="6.12876"></rtept>
<rtept lat="45.90142" lon="6.12875"></rtept>
<rtept lat="45.90143" lon="6.12874"></rtept>
<rtept lat="45.90144" lon="6.12873"></rtept>
<rtept lat="45.90144" lon="6.12872"></rtept>
<rtept lat="45.90144" lon="6.1287"></rtept>
<rtept lat="45.90145" lon="6.12869"></rtept>
<rtept lat="45.90145" lon="6.12867"></rtept>
<rtept lat="45.90144" lon="6.12866"></rtept>
<rtept lat="45.90144" lon="6.12865"></rtept>
<rtept lat="45.90142" lon="6.12858"></rtept>
<rtept lat="45.90141" lon="6.1285"></rtept>
<rtept lat="45.9014" lon="6.12842"></rtept>
<rtept lat="45.9014" lon="6.12833"></rtept>
<rtept lat="45.90141" lon="6.12825"></rtept>
<rtept lat="45.90142" lon="6.12816"></rtept>
<rtept lat="45.90144" lon="6.12808"></rtept>
<rtept lat="45.90147" lon="6.12801"></rtept>
<rtept lat="45.9015" lon="6.12794"></rtept>
<rtept lat="45.90154" lon="6.12787"></rtept>
<rtept lat="45.90158" lon="6.12782"></rtept>
<rtept lat="45.90163" lon="6.12777"></rtept>
<rtept lat="45.90168" lon="6.12773"></rtept>
<rtept lat="45.90169" lon="6.12772"></rtept>
<rtept lat="45.90243" lon="6.12724"></rtept>
<rtept lat="45.90425" lon="6.12605"></rtept>
<rtept lat="45.90425" lon="6.12605"></rtept>
<rtept lat="45.9043" lon="6.12603"></rtept>
<rtept lat="45.90435" lon="6.12602"></rtept>
<rtept lat="45.90441" lon="6.12602"></rtept>
<rtept lat="45.90446" lon="6.12602"></rtept>
<rtept lat="45.90451" lon="6.12604"></rtept>
<rtept lat="45.90454" lon="6.12606"></rtept>
<rtept lat="45.90508" lon="6.12641"></rtept>
<rtept lat="45.90515" lon="6.12645"></rtept>
<rtept lat="45.90527" lon="6.1265"></rtept>
<rtept lat="45.90538" lon="6.12655"></rtept>
<rtept lat="45.90545" lon="6.12657"></rtept>
<rtept lat="45.9055" lon="6.12658"></rtept>
<rtept lat="45.90562" lon="6.1266"></rtept>
<rtept lat="45.90574" lon="6.12662"></rtept>
<rtept lat="45.90572" lon="6.12635"></rtept>
<rtept lat="45.90569" lon="6.1259"></rtept>
<rtept lat="45.90565" lon="6.12544"></rtept>
<rtept lat="45.9056" lon="6.12499"></rtept>
<rtept lat="45.90555" lon="6.12454"></rtept>
<rtept lat="45.90554" lon="6.12446"></rtept>
<rtept lat="45.90519" lon="6.12184"></rtept>
<rtept lat="45.90697" lon="6.11073"></rtept>
<rtept lat="45.90676" lon="6.11066"></rtept>
<rtept lat="45.90672" lon="6.11065"></rtept>
<rtept lat="45.90668" lon="6.11062"></rtept>
<rtept lat="45.90663" lon="6.11058"></rtept>
<rtept lat="45.9066" lon="6.11054"></rtept>
<rtept lat="45.90616" lon="6.1098"></rtept>
<rtept lat="45.90603" lon="6.10958"></rtept>
<rtept lat="45.90587" lon="6.10934"></rtept>
<rtept lat="45.9057" lon="6.1091"></rtept>
<rtept lat="45.90553" lon="6.10887"></rtept>
<rtept lat="45.90536" lon="6.10865"></rtept>
<rtept lat="45.90518" lon="6.10843"></rtept>
<rtept lat="45.90511" lon="6.10835"></rtept>
<rtept lat="45.9051" lon="6.10834"></rtept>
<rtept lat="45.90505" lon="6.10829"></rtept>
<rtept lat="45.905" lon="6.10826"></rtept>
<rtept lat="45.90496" lon="6.10824"></rtept>
<rtept lat="45.90494" lon="6.10823"></rtept>
<rtept lat="45.90487" lon="6.10819"></rtept>
<rtept lat="45.9048" lon="6.10814"></rtept>
<rtept lat="45.90343" lon="6.10674"></rtept>
<rtept lat="45.90544" lon="6.10357"></rtept>
<rtept lat="45.90549" lon="6.1035"></rtept>
<rtept lat="45.9056" lon="6.1033"></rtept>
<rtept lat="45.90571" lon="6.1031"></rtept>
<rtept lat="45.90573" lon="6.10305"></rtept>
<rtept lat="45.90575" lon="6.10302"></rtept>
<rtept lat="45.90579" lon="6.10293"></rtept>
<rtept lat="45.90582" lon="6.10284"></rtept>
<rtept lat="45.90584" lon="6.10274"></rtept>
<rtept lat="45.90586" lon="6.10264"></rtept>
<rtept lat="45.90586" lon="6.10255"></rtept>
<rtept lat="45.90589" lon="6.10218"></rtept>
<rtept lat="45.90593" lon="6.1017"></rtept>
<rtept lat="45.90595" lon="6.10142"></rtept>
<rtept lat="45.90596" lon="6.10134"></rtept>
<rtept lat="45.90599" lon="6.10105"></rtept>
<rtept lat="45.90603" lon="6.10077"></rtept>
<rtept lat="45.90608" lon="6.10048"></rtept>
<rtept lat="45.90613" lon="6.10023"></rtept>
</rte>
</gpx>
51 changes: 50 additions & 1 deletion loadgpx.js
Expand Up @@ -78,6 +78,9 @@ GPXParser.prototype.translateName = function(name) {
else if(name == "trkpt") {
return "Track Point";
}
else if(name == "rtept") {
return "Route Point";
}
}


Expand Down Expand Up @@ -178,9 +181,48 @@ GPXParser.prototype.addTrackToMap = function(track, colour, width) {
}
}

GPXParser.prototype.addRouteToMap = function(route, colour, width) {
var routepoints = route.getElementsByTagName("rtept");
if(routepoints.length == 0) {
return;
}

var pointarray = [];

// process first point
var lastlon = parseFloat(routepoints[0].getAttribute("lon"));
var lastlat = parseFloat(routepoints[0].getAttribute("lat"));
var latlng = new google.maps.LatLng(lastlat,lastlon);
pointarray.push(latlng);

for(var i = 1; i < routepoints.length; i++) {
var lon = parseFloat(routepoints[i].getAttribute("lon"));
var lat = parseFloat(routepoints[i].getAttribute("lat"));

// Verify that this is far enough away from the last point to be used.
var latdiff = lat - lastlat;
var londiff = lon - lastlon;
if(Math.sqrt(latdiff*latdiff + londiff*londiff)
> this.mintrackpointdelta) {
lastlon = lon;
lastlat = lat;
latlng = new google.maps.LatLng(lat,lon);
pointarray.push(latlng);
}

}

var polyline = new google.maps.Polyline({
path: pointarray,
strokeColor: colour,
strokeWeight: width,
map: this.map
});
}

GPXParser.prototype.centerAndZoom = function(trackSegment) {

var pointlist = new Array("trkpt", "wpt");
var pointlist = new Array("trkpt", "rtept", "wpt");
var minlat = 0;
var maxlat = 0;
var minlon = 0;
Expand Down Expand Up @@ -257,3 +299,10 @@ GPXParser.prototype.addWaypointsToMap = function() {
this.createMarker(waypoints[i]);
}
}

GPXParser.prototype.addRoutepointsToMap = function() {
var routes = this.xmlDoc.documentElement.getElementsByTagName("rte");
for(var i = 0; i < routes.length; i++) {
this.addRouteToMap(routes[i], this.trackcolour, this.trackwidth);
}
}

0 comments on commit e29f890

Please sign in to comment.