summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--misc/postrunner/trackview.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/misc/postrunner/trackview.js b/misc/postrunner/trackview.js
new file mode 100644
index 0000000..8f16f98
--- /dev/null
+++ b/misc/postrunner/trackview.js
@@ -0,0 +1,99 @@
+/*
+ * TrackView.rb -- PostRunner - Manage the data from your Garmin sport devices.
+ *
+ * Copyright (c) 2014 by Chris Schlaeger <cs@taskjuggler.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ */
+
+var pr_trackview_init = function(center_long, center_lat) {
+ lm_w = 40;
+ lm_h = 100;
+
+ pr_transformer = function(coords, i, arr) {
+ arr[i] = ol.proj.transform(coords, 'EPSG:4326', 'EPSG:900913');
+ };
+
+ pr_track_points.forEach(pr_transformer);
+ pr_lap_markers.forEach(pr_transformer);
+
+ var map = new ol.Map({
+ view: new ol.View({
+ center: ol.proj.transform([ center_long, center_lat ],
+ 'EPSG:4326', 'EPSG:900913'),
+ zoom: 14,
+ }),
+ layers: [
+ new ol.layer.Tile({
+ source: new ol.source.MapQuest({layer: 'osm'})
+ }),
+ new ol.layer.Vector({
+ source: source_vector = new ol.source.Vector({
+ features: [
+ new ol.Feature({
+ geometry: new ol.geom.LineString(pr_track_points)
+ })
+ ]
+ }),
+ style: [
+ new ol.style.Style({
+ stroke: new ol.style.Stroke({
+ color: 'red',
+ width: 5
+ }),
+ fill: new ol.style.Fill({
+ color: 'white'
+ })
+ })
+ ]
+ }),
+ new ol.layer.Vector({
+ source: lap_marker_source = new ol.source.Vector(),
+ style: function(feature, resolution) {
+ return [
+ new ol.style.Style({
+ stroke: new ol.style.Stroke({
+ color: 'black',
+ width: 2
+ }),
+ fill: new ol.style.Fill({
+ color: feature.get('color')
+ }),
+ text: new ol.style.Text({
+ font: '' + (lm_w / resolution) + 'px helvetica,sans-serif',
+ text: resolution < (lm_w / 8.0) ? feature.get('name') : '',
+ fill: new ol.style.Fill({
+ color: 'black'
+ })
+ })
+ })
+ ];
+ }
+ })
+ ],
+ target: "map"
+ });
+ for (var i in pr_lap_markers) {
+ x = pr_lap_markers[i][0];
+ y = pr_lap_markers[i][1];
+ lap_marker_source.addFeature(
+ new ol.Feature({
+ geometry: new ol.geom.Polygon([[[ x - lm_w, y + lm_h ],
+ [ x, y ],
+ [ x + lm_w, y + lm_h ],
+ [ x - lm_w, y + lm_h ]]])
+ })
+ );
+ lap_marker_source.addFeature(
+ new ol.Feature({
+ geometry: new ol.geom.Circle([ x, y + lm_h ], lm_w),
+ name: (i == 0 ? 'S' : i == pr_lap_markers.length - 1 ? 'F' : i),
+ color: (i == 0 ? 'green' :
+ i == pr_lap_markers.length - 1 ? 'red' : 'yellow'),
+ })
+ );
+ };
+};
+