Gooby 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. data/README +218 -0
  2. data/bin/forerunner_xml_parser.rb +28 -0
  3. data/bin/forerunner_xml_parser.sh +16 -0
  4. data/bin/forerunner_xml_splitter.rb +60 -0
  5. data/bin/gen_gmap.rb +30 -0
  6. data/bin/gen_gmap.sh +19 -0
  7. data/bin/tests_gen.rb +13 -0
  8. data/data/20041113_richmond_marathon.csv +1036 -0
  9. data/data/20041113_richmond_marathon.xml +8663 -0
  10. data/data/20050305_corporate_cup_hm.csv +251 -0
  11. data/data/20050305_corporate_cup_hm.xml +2208 -0
  12. data/data/20050430_nashville_marathon.csv +1208 -0
  13. data/data/20050430_nashville_marathon.xml +10043 -0
  14. data/data/20051119_dowd_ymca_hm.csv +251 -0
  15. data/data/20051119_dowd_ymca_hm.xml +2210 -0
  16. data/data/20051124_hyatt_turkey_trot_8K.csv +321 -0
  17. data/data/20051124_hyatt_turkey_trot_8K.xml +2651 -0
  18. data/data/forerunner_2005.xml +259620 -0
  19. data/data/forerunner_2006.xml +190853 -0
  20. data/data/forerunner_2007.xml +259014 -0
  21. data/data/geo_data.txt +171 -0
  22. data/data/phx.csv +1280 -0
  23. data/data/phx.xml +10620 -0
  24. data/data/run_2007_01_01_16_38_27.xml +2020 -0
  25. data/data/run_2007_01_06_15_27_31.xml +2020 -0
  26. data/data/run_2007_01_10_12_25_47.xml +820 -0
  27. data/data/run_2007_01_10_22_44_54.csv +112 -0
  28. data/data/run_2007_01_10_22_44_54.xml +908 -0
  29. data/data/run_2007_01_11_10_48_45.xml +1292 -0
  30. data/data/run_2007_01_13_15_37_06.xml +1964 -0
  31. data/data/run_2007_01_14_15_46_02.xml +1368 -0
  32. data/data/run_2007_01_15_14_01_48.xml +1868 -0
  33. data/data/run_2007_01_20_16_22_05.xml +1702 -0
  34. data/data/run_2007_01_27_17_32_13.xml +3626 -0
  35. data/data/run_2007_01_28_19_14_52.xml +2538 -0
  36. data/data/run_2007_02_03_14_30_20.xml +2016 -0
  37. data/data/run_2007_02_04_18_02_30.xml +1476 -0
  38. data/data/run_2007_02_17_16_29_35.xml +1236 -0
  39. data/data/run_2007_02_19_14_44_33.xml +1816 -0
  40. data/data/run_2007_02_23_15_53_55.xml +36 -0
  41. data/data/run_2007_02_23_15_55_20.xml +1296 -0
  42. data/data/run_2007_02_24_15_01_35.csv +484 -0
  43. data/data/run_2007_02_24_15_01_35.xml +3884 -0
  44. data/data/test1.txt +4 -0
  45. data/lib/cls_counter_hash.rb +83 -0
  46. data/lib/cls_delim_line.rb +40 -0
  47. data/lib/cls_dttm.rb +84 -0
  48. data/lib/cls_duration.rb +87 -0
  49. data/lib/cls_forerunner_xml_parser.rb +183 -0
  50. data/lib/cls_forerunner_xml_splitter.rb +113 -0
  51. data/lib/cls_geo_data.rb +186 -0
  52. data/lib/cls_gooby_object.rb +23 -0
  53. data/lib/cls_google_map_generator.rb +368 -0
  54. data/lib/cls_history.rb +38 -0
  55. data/lib/cls_lap.rb +27 -0
  56. data/lib/cls_line.rb +78 -0
  57. data/lib/cls_options.rb +74 -0
  58. data/lib/cls_position.rb +49 -0
  59. data/lib/cls_run.rb +199 -0
  60. data/lib/cls_simple_xml_parser.rb +46 -0
  61. data/lib/cls_test_regen.rb +187 -0
  62. data/lib/cls_track.rb +52 -0
  63. data/lib/cls_trackpoint.rb +205 -0
  64. data/lib/mod_introspect.rb +33 -0
  65. data/lib/mod_io.rb +65 -0
  66. data/lib/mod_project_info.rb +81 -0
  67. data/lib/mod_string.rb +26 -0
  68. data/lib/mod_test_helper.rb +22 -0
  69. data/samples/20041113_richmond_marathon.html +532 -0
  70. data/samples/20050305_corporate_cup_hm.html +448 -0
  71. data/samples/20050430_nashville_marathon.html +530 -0
  72. data/samples/gps_point_capture.html +54 -0
  73. data/samples/phoenix_marathon.html +542 -0
  74. data/samples/run_2007_01_10_22_44_54.html +146 -0
  75. data/samples/run_2007_02_24_15_01_35.html +298 -0
  76. data/tests/tst_cls_counter_hash.rb +105 -0
  77. data/tests/tst_cls_delim_line.rb +72 -0
  78. data/tests/tst_cls_dttm.rb +129 -0
  79. data/tests/tst_cls_duration.rb +49 -0
  80. data/tests/tst_cls_forerunner_xml_parser.rb +68 -0
  81. data/tests/tst_cls_geo_data.rb +69 -0
  82. data/tests/tst_cls_gooby_object.rb +24 -0
  83. data/tests/tst_cls_google_map_generator.rb +107 -0
  84. data/tests/tst_cls_history.rb +44 -0
  85. data/tests/tst_cls_lap.rb +36 -0
  86. data/tests/tst_cls_line.rb +108 -0
  87. data/tests/tst_cls_options.rb +77 -0
  88. data/tests/tst_cls_position.rb +64 -0
  89. data/tests/tst_cls_run.rb +140 -0
  90. data/tests/tst_cls_simple_xml_parser.rb +48 -0
  91. data/tests/tst_cls_track.rb +68 -0
  92. data/tests/tst_cls_trackpoint.rb +143 -0
  93. data/tests/tst_gooby.rb +28 -0
  94. data/tests/tst_mod_introspect.rb +30 -0
  95. data/tests/tst_mod_io.rb +51 -0
  96. data/tests/tst_mod_project_info.rb +77 -0
  97. data/tests/tst_mod_string.rb +56 -0
  98. metadata +142 -0
@@ -0,0 +1,33 @@
1
+ =begin rdoc
2
+
3
+ Gooby - Copyright 2007 by Chris Joakim.
4
+ Gooby is available under GNU General Public License (GPL) license.
5
+
6
+ =end
7
+
8
+ module Gooby
9
+
10
+ module Introspect
11
+
12
+ # Return a String w/instance variable and method info.
13
+ def introspect
14
+ c = self.class
15
+ s = "Class: #{c} "
16
+ iv = self.instance_variables.sort
17
+ s << " ivc=#{iv.size}"
18
+ iv.each { |v| s << " #{v}" }
19
+ meth = self.methods.sort
20
+ s << " mc=#{meth.size}"
21
+ meth.each { |m| s << " #{m}" }
22
+ s << ""
23
+ s
24
+ end
25
+
26
+ # Return 'self.instance_variables'.
27
+ def to_yaml_properties
28
+ self.instance_variables
29
+ end
30
+
31
+ end
32
+
33
+ end
data/lib/mod_io.rb ADDED
@@ -0,0 +1,65 @@
1
+ =begin rdoc
2
+
3
+ Gooby - Copyright 2007 by Chris Joakim.
4
+ Gooby is available under GNU General Public License (GPL) license.
5
+
6
+ =end
7
+
8
+ module Gooby
9
+
10
+ module GoobyIO
11
+
12
+ # Return an Array of lines in file, optionally stripped.
13
+ def read_lines(filename, strip=false)
14
+
15
+ array = IO.readlines(filename)
16
+ if strip
17
+ array = strip_lines(array)
18
+ end
19
+ return array
20
+ end
21
+
22
+ # Return an Array of lines in file per the given delimeter, optionally stripped.
23
+ def read_as_ascii_lines(filename, delim=10, strip=false)
24
+
25
+ array = Array.new
26
+ file = File.new(filename)
27
+ currLine = ''
28
+ bytesRead = 0
29
+ linesRead = 0
30
+
31
+ file.each_byte { |b|
32
+ bytesRead = bytesRead + 1
33
+ if (b == delim) # delim is 13 for quicken, 10 for address book xml
34
+ array << currLine
35
+ currLine = ''
36
+ linesRead = linesRead + 1
37
+ else
38
+ if (b < 127)
39
+ currLine << "#{b.chr}"
40
+ end
41
+ end
42
+ }
43
+
44
+ if currLine.size > 0
45
+ array << currLine
46
+ end
47
+ if strip
48
+ array = strip_lines(array)
49
+ end
50
+ return array
51
+ end
52
+
53
+ # Strip the lines/Strings; return a new Array.
54
+ def strip_lines(array)
55
+
56
+ newArray = Array.new
57
+ if (array != nil)
58
+ array.each { |line| line.strip! ; newArray << line }
59
+ end
60
+ return newArray
61
+ end
62
+
63
+ end
64
+
65
+ end
@@ -0,0 +1,81 @@
1
+ =begin rdoc
2
+
3
+ This module is used to embed information about the Gooby project and
4
+ version into the codebase.
5
+
6
+ Gooby - Copyright 2007 by Chris Joakim.
7
+ Gooby is available under GNU General Public License (GPL) license.
8
+
9
+ =end
10
+
11
+ module Gooby
12
+
13
+ module GoobyProjectInfo
14
+
15
+ # Return a String version number, like '1.0.0'.
16
+ def project_version_number
17
+ '0.9.0'
18
+ end
19
+
20
+ # Return a String date, like '2007/02/25'.
21
+ def project_date
22
+ '2007/02/25'
23
+ end
24
+
25
+ # Return a String year, like '2007'.
26
+ def project_year
27
+ project_date[0...4] # start, length
28
+ end
29
+
30
+ # Return a String containing copyright, year, and author.
31
+ def project_copyright
32
+ "Copyright (C) #{project_year} #{project_author}"
33
+ end
34
+
35
+ # Return a String containing GNU/GPL, and the gpl.html URL.
36
+ def project_license
37
+ 'GNU General Public License (GPL). See http://www.gnu.org/copyleft/gpl.html'
38
+ end
39
+
40
+ # Return a String containing the project author name.
41
+ def project_author
42
+ 'Chris Joakim'
43
+ end
44
+
45
+ def google_maps_api_level
46
+ '2'
47
+ end
48
+
49
+ def some_new_thing
50
+ '2'
51
+ end
52
+
53
+ def tested_files
54
+ array = Array.new
55
+ array << 'cls_counter_hash.rb'
56
+ array << 'cls_delim_line.rb'
57
+ array << 'cls_dttm.rb'
58
+ array << 'cls_duration.rb'
59
+ array << 'cls_forerunner_xml_parser.rb'
60
+ array << 'cls_geo_data.rb'
61
+ array << 'cls_gooby_object.rb'
62
+ array << 'cls_google_map_generator.rb'
63
+ array << 'cls_history.rb'
64
+ array << 'cls_lap.rb'
65
+ array << 'cls_line.rb'
66
+ array << 'cls_options.rb'
67
+ array << 'cls_position.rb'
68
+ array << 'cls_run.rb'
69
+ array << 'cls_simple_xml_parser.rb'
70
+ array << 'cls_track.rb'
71
+ array << 'cls_trackpoint.rb'
72
+ array << 'mod_introspect.rb'
73
+ array << 'mod_io.rb'
74
+ array << 'mod_project_info.rb'
75
+ array << 'mod_string.rb'
76
+ array
77
+ end
78
+
79
+ end
80
+
81
+ end
data/lib/mod_string.rb ADDED
@@ -0,0 +1,26 @@
1
+ =begin rdoc
2
+
3
+ Gooby - Copyright 2007 by Chris Joakim.
4
+ Gooby is available under GNU General Public License (GPL) license.
5
+
6
+ =end
7
+
8
+ module Gooby
9
+
10
+ module GoobyString
11
+
12
+ def tokenize(string, delim, strip=false)
13
+ if string
14
+ tokens = string.split(delim)
15
+ if strip
16
+ tokens.each { |tok| tok.strip! }
17
+ end
18
+ tokens
19
+ else
20
+ Array.new
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,22 @@
1
+ =begin rdoc
2
+
3
+ Gooby - Copyright 2007 by Chris Joakim.
4
+ Gooby is available under GNU General Public License (GPL) license.
5
+
6
+ =end
7
+
8
+ module Gooby
9
+
10
+ module TestHelper
11
+
12
+ def setup
13
+ puts "test: #{name}"
14
+ end
15
+
16
+ def teardown
17
+ @debug = false
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,532 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
6
+ <title> Google Map by Gooby </title>
7
+ <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAdn5SVzjZKZKs1IRkFdx52xQg0TO_bCqGOTsRH2RbuhBZnI0wvRQW0Q92mw1taN1NJCk2cxlQQutfuA" type="text/javascript"></script>
8
+ <script type="text/javascript">
9
+ //<![CDATA[
10
+ function load() {
11
+ if (GBrowserIsCompatible()) {
12
+ var map = new GMap2(document.getElementById("map"));
13
+ map.addControl(new GLargeMapControl());
14
+ map.addControl(new GMapTypeControl());
15
+
16
+ var centerPoint = new GLatLng(37.55524, -77.490175);
17
+ map.setCenter(centerPoint, 12);
18
+
19
+
20
+ var points = new Array();
21
+ points.push(new GLatLng(37.54314,-77.43634)); // 1 (1 of 1035.0) 2004-11-13T13:05:18Z 0 00:00:00 0.0
22
+ points.push(new GLatLng(37.54423,-77.43771)); // 2 (6 of 1035.0) 2004-11-13T13:06:17Z 59 00:00:59 0.106923994397114
23
+ points.push(new GLatLng(37.54593,-77.44025)); // 3 (11 of 1035.0) 2004-11-13T13:07:54Z 156 00:02:36 0.289701376657748
24
+ points.push(new GLatLng(37.5473,-77.44469)); // 4 (16 of 1035.0) 2004-11-13T13:09:39Z 261 00:04:21 0.556906792422468
25
+ points.push(new GLatLng(37.54863,-77.44696)); // 5 (21 of 1035.0) 2004-11-13T13:10:53Z 335 00:05:35 0.71170516069263
26
+ points.push(new GLatLng(37.5497,-77.44857)); // 6 (26 of 1035.0) 2004-11-13T13:11:52Z 394 00:06:34 0.827396844122309
27
+ points.push(new GLatLng(37.5505,-77.44992)); // 7 (31 of 1035.0) 2004-11-13T13:12:39Z 441 00:07:21 0.92004077435076
28
+ points.push(new GLatLng(37.55133,-77.45125)); // 8 (35 of 1035.0) 2004-11-13T13:13:31Z 493 00:08:13 1.01289462376059 1.0 00:08:13
29
+ points.push(new GLatLng(37.55208,-77.45248)); // 9 (40 of 1035.0) 2004-11-13T13:14:15Z 537 00:08:57 1.09839689220024
30
+ points.push(new GLatLng(37.55314,-77.45428)); // 10 (45 of 1035.0) 2004-11-13T13:15:18Z 600 00:10:00 1.22133365581976
31
+ points.push(new GLatLng(37.55393,-77.45561)); // 11 (50 of 1035.0) 2004-11-13T13:16:11Z 653 00:10:53 1.31239485341224
32
+ points.push(new GLatLng(37.55472,-77.45698)); // 12 (55 of 1035.0) 2004-11-13T13:17:03Z 705 00:11:45 1.40525635086182
33
+ points.push(new GLatLng(37.55556,-77.45836)); // 13 (60 of 1035.0) 2004-11-13T13:17:53Z 755 00:12:35 1.50055449539542
34
+ points.push(new GLatLng(37.55638,-77.45975)); // 14 (65 of 1035.0) 2004-11-13T13:18:43Z 805 00:13:25 1.59553097292461
35
+ points.push(new GLatLng(37.55734,-77.46147)); // 15 (70 of 1035.0) 2004-11-13T13:19:42Z 864 00:14:24 1.71080891435601
36
+ points.push(new GLatLng(37.5582,-77.46293)); // 16 (75 of 1035.0) 2004-11-13T13:20:34Z 916 00:15:16 1.81052895853505
37
+ points.push(new GLatLng(37.55942,-77.46496)); // 17 (80 of 1035.0) 2004-11-13T13:21:43Z 985 00:16:25 1.95017328661485
38
+ points.push(new GLatLng(37.55998,-77.46582)); // 18 (82 of 1035.0) 2004-11-13T13:22:13Z 1015 00:16:55 2.01116382087678 2.0 00:08:42
39
+ points.push(new GLatLng(37.56095,-77.46747)); // 19 (87 of 1035.0) 2004-11-13T13:23:09Z 1071 00:17:51 2.12375571222832
40
+ points.push(new GLatLng(37.56215,-77.46949)); // 20 (92 of 1035.0) 2004-11-13T13:24:18Z 1140 00:19:00 2.26206064759939
41
+ points.push(new GLatLng(37.56181,-77.47076)); // 21 (97 of 1035.0) 2004-11-13T13:25:11Z 1193 00:19:53 2.37000534914213
42
+ points.push(new GLatLng(37.56078,-77.47202)); // 22 (102 of 1035.0) 2004-11-13T13:26:08Z 1250 00:20:50 2.48435316089741
43
+ points.push(new GLatLng(37.56241,-77.47434)); // 23 (107 of 1035.0) 2004-11-13T13:27:32Z 1334 00:22:14 2.65476076886625
44
+ points.push(new GLatLng(37.56354,-77.47617)); // 24 (112 of 1035.0) 2004-11-13T13:28:40Z 1402 00:23:22 2.78186352563053
45
+ points.push(new GLatLng(37.56481,-77.47838)); // 25 (117 of 1035.0) 2004-11-13T13:29:57Z 1479 00:24:39 2.93156162046509
46
+ points.push(new GLatLng(37.56556,-77.47962)); // 26 (120 of 1035.0) 2004-11-13T13:30:40Z 1522 00:25:22 3.01714523951085 3.0 00:08:27
47
+ points.push(new GLatLng(37.56644,-77.48114)); // 27 (125 of 1035.0) 2004-11-13T13:31:32Z 1574 00:26:14 3.12041247887602
48
+ points.push(new GLatLng(37.56775,-77.48333)); // 28 (130 of 1035.0) 2004-11-13T13:32:47Z 1649 00:27:29 3.27077989712514
49
+ points.push(new GLatLng(37.56912,-77.48565)); // 29 (135 of 1035.0) 2004-11-13T13:34:10Z 1732 00:28:52 3.42937745838166
50
+ points.push(new GLatLng(37.57067,-77.48818)); // 30 (140 of 1035.0) 2004-11-13T13:35:40Z 1822 00:30:22 3.60517740314757
51
+ points.push(new GLatLng(37.57204,-77.49048)); // 31 (145 of 1035.0) 2004-11-13T13:37:03Z 1905 00:31:45 3.76284426107172
52
+ points.push(new GLatLng(37.57318,-77.49241)); // 32 (150 of 1035.0) 2004-11-13T13:38:11Z 1973 00:32:53 3.89472541862394
53
+ points.push(new GLatLng(37.57262,-77.49374)); // 33 (155 of 1035.0) 2004-11-13T13:39:11Z 2033 00:33:53 4.02676900463497 4.0 00:08:31
54
+ points.push(new GLatLng(37.57176,-77.4946)); // 34 (160 of 1035.0) 2004-11-13T13:39:56Z 2078 00:34:38 4.10356239715243
55
+ points.push(new GLatLng(37.56983,-77.49627)); // 35 (165 of 1035.0) 2004-11-13T13:41:19Z 2161 00:36:01 4.26532756120921
56
+ points.push(new GLatLng(37.56788,-77.49769)); // 36 (170 of 1035.0) 2004-11-13T13:42:41Z 2243 00:37:23 4.42115850103388
57
+ points.push(new GLatLng(37.56614,-77.49893)); // 37 (175 of 1035.0) 2004-11-13T13:43:51Z 2313 00:38:33 4.55930585858025
58
+ points.push(new GLatLng(37.56582,-77.50039)); // 38 (180 of 1035.0) 2004-11-13T13:44:47Z 2369 00:39:29 4.67472188153515
59
+ points.push(new GLatLng(37.56736,-77.50333)); // 39 (185 of 1035.0) 2004-11-13T13:46:26Z 2468 00:41:08 4.86801470078062
60
+ points.push(new GLatLng(37.56837,-77.5055)); // 40 (189 of 1035.0) 2004-11-13T13:47:37Z 2539 00:42:19 5.00592810598917 5.0 00:08:26
61
+ points.push(new GLatLng(37.56914,-77.50711)); // 41 (194 of 1035.0) 2004-11-13T13:48:32Z 2594 00:43:14 5.10916222729476
62
+ points.push(new GLatLng(37.57013,-77.50932)); // 42 (199 of 1035.0) 2004-11-13T13:49:45Z 2667 00:44:27 5.24829847159214
63
+ points.push(new GLatLng(37.57123,-77.51151)); // 43 (204 of 1035.0) 2004-11-13T13:50:57Z 2739 00:45:39 5.39059926748032
64
+ points.push(new GLatLng(37.57234,-77.51393)); // 44 (209 of 1035.0) 2004-11-13T13:52:19Z 2821 00:47:01 5.54382085860815
65
+ points.push(new GLatLng(37.57316,-77.51625)); // 45 (214 of 1035.0) 2004-11-13T13:53:30Z 2892 00:48:12 5.68379982481173
66
+ points.push(new GLatLng(37.57185,-77.51736)); // 46 (219 of 1035.0) 2004-11-13T13:54:35Z 2957 00:49:17 5.80983567230983
67
+ points.push(new GLatLng(37.56938,-77.51822)); // 47 (224 of 1035.0) 2004-11-13T13:56:08Z 3050 00:50:50 5.98875530074231
68
+ points.push(new GLatLng(37.56904,-77.51842)); // 48 (226 of 1035.0) 2004-11-13T13:56:31Z 3073 00:51:13 6.01495659469438 6.0 00:08:54
69
+ points.push(new GLatLng(37.56876,-77.51934)); // 49 (231 of 1035.0) 2004-11-13T13:57:04Z 3106 00:51:46 6.08040905503655
70
+ points.push(new GLatLng(37.56917,-77.52206)); // 50 (236 of 1035.0) 2004-11-13T13:58:21Z 3183 00:53:03 6.23222273492036
71
+ points.push(new GLatLng(37.56863,-77.52453)); // 51 (241 of 1035.0) 2004-11-13T13:59:34Z 3256 00:54:16 6.37405050385754
72
+ points.push(new GLatLng(37.56794,-77.52738)); // 52 (246 of 1035.0) 2004-11-13T14:00:56Z 3338 00:55:38 6.53849454284372
73
+ points.push(new GLatLng(37.56816,-77.53009)); // 53 (251 of 1035.0) 2004-11-13T14:02:11Z 3413 00:56:53 6.68789903643218
74
+ points.push(new GLatLng(37.56799,-77.53168)); // 54 (256 of 1035.0) 2004-11-13T14:02:56Z 3458 00:57:38 6.77959618232015
75
+ points.push(new GLatLng(37.56803,-77.5341)); // 55 (261 of 1035.0) 2004-11-13T14:04:04Z 3526 00:58:46 6.91279620627879
76
+ points.push(new GLatLng(37.56792,-77.5358)); // 56 (264 of 1035.0) 2004-11-13T14:04:52Z 3574 00:59:34 7.00675373221606 7.0 00:08:21
77
+ points.push(new GLatLng(37.56764,-77.53777)); // 57 (269 of 1035.0) 2004-11-13T14:05:47Z 3629 01:00:29 7.11654665514228
78
+ points.push(new GLatLng(37.56689,-77.53962)); // 58 (274 of 1035.0) 2004-11-13T14:06:53Z 3695 01:01:35 7.24364270792186
79
+ points.push(new GLatLng(37.56638,-77.54185)); // 59 (279 of 1035.0) 2004-11-13T14:07:59Z 3761 01:02:41 7.3775980899979
80
+ points.push(new GLatLng(37.56468,-77.54331)); // 60 (284 of 1035.0) 2004-11-13T14:09:15Z 3837 01:03:57 7.52141025778632
81
+ points.push(new GLatLng(37.56296,-77.54367)); // 61 (289 of 1035.0) 2004-11-13T14:10:17Z 3899 01:04:59 7.6425855564398
82
+ points.push(new GLatLng(37.56155,-77.54391)); // 62 (294 of 1035.0) 2004-11-13T14:11:09Z 3951 01:05:51 7.74099027600618
83
+ points.push(new GLatLng(37.56024,-77.54412)); // 63 (299 of 1035.0) 2004-11-13T14:11:54Z 3996 01:06:36 7.83244464386864
84
+ points.push(new GLatLng(37.55773,-77.54459)); // 64 (304 of 1035.0) 2004-11-13T14:13:25Z 4087 01:08:07 8.00799174367724 8.0 00:08:33
85
+ points.push(new GLatLng(37.55747,-77.54406)); // 65 (309 of 1035.0) 2004-11-13T14:13:53Z 4115 01:08:35 8.06318316762709
86
+ points.push(new GLatLng(37.55833,-77.54243)); // 66 (314 of 1035.0) 2004-11-13T14:14:57Z 4179 01:09:39 8.18573660922624
87
+ points.push(new GLatLng(37.55889,-77.53996)); // 67 (319 of 1035.0) 2004-11-13T14:16:21Z 4263 01:11:03 8.32705570203374
88
+ points.push(new GLatLng(37.55914,-77.5367)); // 68 (324 of 1035.0) 2004-11-13T14:17:53Z 4355 01:12:35 8.50653336162412
89
+ points.push(new GLatLng(37.55914,-77.53384)); // 69 (329 of 1035.0) 2004-11-13T14:19:13Z 4435 01:13:55 8.66362997714462
90
+ points.push(new GLatLng(37.55929,-77.53135)); // 70 (334 of 1035.0) 2004-11-13T14:20:27Z 4509 01:15:09 8.80116847754491
91
+ points.push(new GLatLng(37.55876,-77.52865)); // 71 (339 of 1035.0) 2004-11-13T14:21:49Z 4591 01:16:31 8.95700338907076
92
+ points.push(new GLatLng(37.55807,-77.52779)); // 72 (341 of 1035.0) 2004-11-13T14:22:21Z 4623 01:17:03 9.02402181848259 9.0 00:08:56
93
+ points.push(new GLatLng(37.55655,-77.52659)); // 73 (346 of 1035.0) 2004-11-13T14:23:27Z 4689 01:18:09 9.14924503208899
94
+ points.push(new GLatLng(37.55472,-77.52578)); // 74 (351 of 1035.0) 2004-11-13T14:24:40Z 4762 01:19:22 9.28369732616903
95
+ points.push(new GLatLng(37.55299,-77.52384)); // 75 (356 of 1035.0) 2004-11-13T14:26:01Z 4843 01:20:43 9.447538872204
96
+ points.push(new GLatLng(37.55191,-77.52193)); // 76 (361 of 1035.0) 2004-11-13T14:27:07Z 4909 01:21:49 9.57650057297273
97
+ points.push(new GLatLng(37.55002,-77.52153)); // 77 (366 of 1035.0) 2004-11-13T14:28:19Z 4981 01:23:01 9.71009185936813
98
+ points.push(new GLatLng(37.55007,-77.52028)); // 78 (371 of 1035.0) 2004-11-13T14:28:56Z 5018 01:23:38 9.78031704455864
99
+ points.push(new GLatLng(37.5482,-77.5176)); // 79 (376 of 1035.0) 2004-11-13T14:30:38Z 5120 01:25:20 9.97933483320977
100
+ points.push(new GLatLng(37.54797,-77.51704)); // 80 (377 of 1035.0) 2004-11-13T14:30:57Z 5139 01:25:39 10.0138818614913 10.0 00:08:36
101
+ points.push(new GLatLng(37.54627,-77.51788)); // 81 (382 of 1035.0) 2004-11-13T14:32:11Z 5213 01:26:53 10.156932916274
102
+ points.push(new GLatLng(37.54354,-77.51891)); // 82 (387 of 1035.0) 2004-11-13T14:34:16Z 5338 01:28:58 10.3718150897664
103
+ points.push(new GLatLng(37.54181,-77.51711)); // 83 (392 of 1035.0) 2004-11-13T14:35:32Z 5414 01:30:14 10.5303699420794
104
+ points.push(new GLatLng(37.54142,-77.51545)); // 84 (397 of 1035.0) 2004-11-13T14:36:18Z 5460 01:31:00 10.6263594230067
105
+ points.push(new GLatLng(37.54037,-77.51453)); // 85 (402 of 1035.0) 2004-11-13T14:37:20Z 5522 01:32:02 10.7354221813914
106
+ points.push(new GLatLng(37.53927,-77.51498)); // 86 (407 of 1035.0) 2004-11-13T14:37:59Z 5561 01:32:41 10.8181118254028
107
+ points.push(new GLatLng(37.53694,-77.5158)); // 87 (412 of 1035.0) 2004-11-13T14:39:29Z 5651 01:34:11 10.9915686970985
108
+ points.push(new GLatLng(37.53674,-77.51548)); // 88 (414 of 1035.0) 2004-11-13T14:39:42Z 5664 01:34:24 11.0161035772686 11.0 00:08:45
109
+ points.push(new GLatLng(37.53625,-77.51337)); // 89 (419 of 1035.0) 2004-11-13T14:40:50Z 5732 01:35:32 11.1367227927776
110
+ points.push(new GLatLng(37.53552,-77.51035)); // 90 (424 of 1035.0) 2004-11-13T14:42:21Z 5823 01:37:03 11.3098172558327
111
+ points.push(new GLatLng(37.53451,-77.50829)); // 91 (429 of 1035.0) 2004-11-13T14:43:27Z 5889 01:38:09 11.4446585137939
112
+ points.push(new GLatLng(37.53273,-77.507)); // 92 (434 of 1035.0) 2004-11-13T14:44:44Z 5966 01:39:26 11.5867952143752
113
+ points.push(new GLatLng(37.53088,-77.50541)); // 93 (439 of 1035.0) 2004-11-13T14:46:11Z 6053 01:40:53 11.7419247731254
114
+ points.push(new GLatLng(37.52908,-77.50189)); // 94 (444 of 1035.0) 2004-11-13T14:48:17Z 6179 01:42:59 11.9715886920464
115
+ points.push(new GLatLng(37.52852,-77.50114)); // 95 (446 of 1035.0) 2004-11-13T14:48:46Z 6208 01:43:28 12.0281665281782 12.0 00:09:04
116
+ points.push(new GLatLng(37.52737,-77.49936)); // 96 (451 of 1035.0) 2004-11-13T14:49:52Z 6274 01:44:34 12.1541561439794
117
+ points.push(new GLatLng(37.52638,-77.49818)); // 97 (456 of 1035.0) 2004-11-13T14:50:55Z 6337 01:45:37 12.2485862026703
118
+ points.push(new GLatLng(37.52492,-77.49552)); // 98 (461 of 1035.0) 2004-11-13T14:52:27Z 6429 01:47:09 12.4268592271339
119
+ points.push(new GLatLng(37.52312,-77.49209)); // 99 (466 of 1035.0) 2004-11-13T14:54:20Z 6542 01:49:02 12.6528187805037
120
+ points.push(new GLatLng(37.52183,-77.48968)); // 100 (471 of 1035.0) 2004-11-13T14:55:45Z 6627 01:50:27 12.8122307121884
121
+ points.push(new GLatLng(37.52089,-77.48754)); // 101 (476 of 1035.0) 2004-11-13T14:56:56Z 6698 01:51:38 12.9474814958277
122
+ points.push(new GLatLng(37.52069,-77.4864)); // 102 (478 of 1035.0) 2004-11-13T14:57:29Z 6731 01:52:11 13.0115110937403 13.0 00:08:43
123
+ points.push(new GLatLng(37.52035,-77.48447)); // 103 (483 of 1035.0) 2004-11-13T14:58:28Z 6790 01:53:10 13.120275528204
124
+ points.push(new GLatLng(37.51986,-77.48198)); // 104 (488 of 1035.0) 2004-11-13T14:59:40Z 6862 01:54:22 13.260962797279
125
+ points.push(new GLatLng(37.51887,-77.47938)); // 105 (493 of 1035.0) 2004-11-13T15:01:03Z 6945 01:55:45 13.4216976013247
126
+ points.push(new GLatLng(37.51765,-77.4767)); // 106 (498 of 1035.0) 2004-11-13T15:02:33Z 7035 01:57:15 13.5913306044174
127
+ points.push(new GLatLng(37.51644,-77.47396)); // 107 (503 of 1035.0) 2004-11-13T15:04:00Z 7122 01:58:42 13.7634983336463
128
+ points.push(new GLatLng(37.51567,-77.47106)); // 108 (508 of 1035.0) 2004-11-13T15:05:26Z 7208 02:00:08 13.931858158213
129
+ points.push(new GLatLng(37.5158,-77.46936)); // 109 (511 of 1035.0) 2004-11-13T15:06:21Z 7263 02:01:03 14.0275831220463 14.0 00:08:52
130
+ points.push(new GLatLng(37.51698,-77.46707)); // 110 (516 of 1035.0) 2004-11-13T15:07:35Z 7337 02:02:17 14.1799981716365
131
+ points.push(new GLatLng(37.51745,-77.46584)); // 111 (521 of 1035.0) 2004-11-13T15:08:23Z 7385 02:03:05 14.2549793844926
132
+ points.push(new GLatLng(37.51848,-77.46316)); // 112 (526 of 1035.0) 2004-11-13T15:09:48Z 7470 02:04:30 14.4182040564254
133
+ points.push(new GLatLng(37.51943,-77.46089)); // 113 (531 of 1035.0) 2004-11-13T15:11:01Z 7543 02:05:43 14.5589484198491
134
+ points.push(new GLatLng(37.52033,-77.45866)); // 114 (536 of 1035.0) 2004-11-13T15:12:11Z 7613 02:06:53 14.6962976327517
135
+ points.push(new GLatLng(37.52112,-77.45645)); // 115 (541 of 1035.0) 2004-11-13T15:13:19Z 7681 02:08:01 14.8292314295688
136
+ points.push(new GLatLng(37.52183,-77.45479)); // 116 (546 of 1035.0) 2004-11-13T15:14:12Z 7734 02:08:54 14.9326731708379
137
+ points.push(new GLatLng(37.52243,-77.45353)); // 117 (549 of 1035.0) 2004-11-13T15:14:57Z 7779 02:09:39 15.0136522026628 15.0 00:08:36
138
+ points.push(new GLatLng(37.52322,-77.45211)); // 118 (554 of 1035.0) 2004-11-13T15:15:47Z 7829 02:10:29 15.1087447872879
139
+ points.push(new GLatLng(37.5246,-77.4526)); // 119 (559 of 1035.0) 2004-11-13T15:16:37Z 7879 02:11:19 15.2136014919309
140
+ points.push(new GLatLng(37.52634,-77.45235)); // 120 (564 of 1035.0) 2004-11-13T15:17:40Z 7942 02:12:22 15.3362611641563
141
+ points.push(new GLatLng(37.52782,-77.45173)); // 121 (569 of 1035.0) 2004-11-13T15:18:39Z 8001 02:13:21 15.444109219189
142
+ points.push(new GLatLng(37.52898,-77.45125)); // 122 (574 of 1035.0) 2004-11-13T15:19:26Z 8048 02:14:08 15.5286903258962
143
+ points.push(new GLatLng(37.53043,-77.45067)); // 123 (579 of 1035.0) 2004-11-13T15:20:24Z 8106 02:15:06 15.6340345715211
144
+ points.push(new GLatLng(37.53187,-77.45014)); // 124 (584 of 1035.0) 2004-11-13T15:21:22Z 8164 02:16:04 15.7377296386684
145
+ points.push(new GLatLng(37.53331,-77.44967)); // 125 (589 of 1035.0) 2004-11-13T15:22:18Z 8220 02:17:00 15.8406378638588
146
+ points.push(new GLatLng(37.53485,-77.44943)); // 126 (594 of 1035.0) 2004-11-13T15:23:15Z 8277 02:17:57 15.9482409262778
147
+ points.push(new GLatLng(37.53578,-77.44947)); // 127 (597 of 1035.0) 2004-11-13T15:23:51Z 8313 02:18:33 16.0125529444477 16.0 00:08:54
148
+ points.push(new GLatLng(37.53704,-77.44939)); // 128 (602 of 1035.0) 2004-11-13T15:24:42Z 8364 02:19:24 16.0997931985578
149
+ points.push(new GLatLng(37.53816,-77.44941)); // 129 (607 of 1035.0) 2004-11-13T15:25:34Z 8416 02:20:16 16.1772316292426
150
+ points.push(new GLatLng(37.53996,-77.44941)); // 130 (612 of 1035.0) 2004-11-13T15:26:42Z 8484 02:21:24 16.3017971460538
151
+ points.push(new GLatLng(37.5417,-77.44934)); // 131 (617 of 1035.0) 2004-11-13T15:27:47Z 8549 02:22:29 16.4222286883705
152
+ points.push(new GLatLng(37.54335,-77.44924)); // 132 (622 of 1035.0) 2004-11-13T15:28:46Z 8608 02:23:28 16.5364076925736
153
+ points.push(new GLatLng(37.54537,-77.44915)); // 133 (627 of 1035.0) 2004-11-13T15:30:00Z 8682 02:24:42 16.6764050652262
154
+ points.push(new GLatLng(37.54593,-77.45012)); // 134 (632 of 1035.0) 2004-11-13T15:31:03Z 8745 02:25:45 16.7648008672392
155
+ points.push(new GLatLng(37.54588,-77.45243)); // 135 (637 of 1035.0) 2004-11-13T15:32:03Z 8805 02:26:45 16.8915790871257
156
+ points.push(new GLatLng(37.5458,-77.45559)); // 136 (642 of 1035.0) 2004-11-13T15:33:31Z 8893 02:28:13 17.0648110183381 17.0 00:09:40
157
+ points.push(new GLatLng(37.54612,-77.45733)); // 137 (647 of 1035.0) 2004-11-13T15:34:23Z 8945 02:29:05 17.1639117037192
158
+ points.push(new GLatLng(37.54702,-77.45984)); // 138 (652 of 1035.0) 2004-11-13T15:35:43Z 9025 02:30:25 17.315101345106
159
+ points.push(new GLatLng(37.54777,-77.46187)); // 139 (657 of 1035.0) 2004-11-13T15:36:49Z 9091 02:31:31 17.4380323995227
160
+ points.push(new GLatLng(37.54854,-77.46393)); // 140 (662 of 1035.0) 2004-11-13T15:37:57Z 9159 02:32:39 17.5628951379647
161
+ points.push(new GLatLng(37.54912,-77.46576)); // 141 (667 of 1035.0) 2004-11-13T15:38:53Z 9215 02:33:35 17.6715638437557
162
+ points.push(new GLatLng(37.5499,-77.46782)); // 142 (672 of 1035.0) 2004-11-13T15:39:59Z 9281 02:34:41 17.7970172501388
163
+ points.push(new GLatLng(37.55037,-77.46898)); // 143 (677 of 1035.0) 2004-11-13T15:40:36Z 9318 02:35:18 17.8685223380721
164
+ points.push(new GLatLng(37.55093,-77.4708)); // 144 (682 of 1035.0) 2004-11-13T15:41:34Z 9376 02:36:16 17.9764940580828
165
+ points.push(new GLatLng(37.5511,-77.47121)); // 145 (683 of 1035.0) 2004-11-13T15:41:48Z 9390 02:36:30 18.0018378406249 18.0 00:08:17
166
+ points.push(new GLatLng(37.5517,-77.47277)); // 146 (688 of 1035.0) 2004-11-13T15:42:38Z 9440 02:37:20 18.0971298071894
167
+ points.push(new GLatLng(37.55219,-77.47404)); // 147 (693 of 1035.0) 2004-11-13T15:43:20Z 9482 02:38:02 18.1748275783354
168
+ points.push(new GLatLng(37.55269,-77.4755)); // 148 (698 of 1035.0) 2004-11-13T15:44:11Z 9533 02:38:53 18.2625544186737
169
+ points.push(new GLatLng(37.55438,-77.47471)); // 149 (703 of 1035.0) 2004-11-13T15:45:15Z 9597 02:39:57 18.3890335780148
170
+ points.push(new GLatLng(37.55655,-77.47348)); // 150 (708 of 1035.0) 2004-11-13T15:46:41Z 9683 02:41:23 18.5534374989842
171
+ points.push(new GLatLng(37.55889,-77.47222)); // 151 (713 of 1035.0) 2004-11-13T15:48:12Z 9774 02:42:54 18.7292654383694
172
+ points.push(new GLatLng(37.56069,-77.47114)); // 152 (718 of 1035.0) 2004-11-13T15:49:26Z 9848 02:44:08 18.8671241939458
173
+ points.push(new GLatLng(37.56279,-77.47003)); // 153 (723 of 1035.0) 2004-11-13T15:50:49Z 9931 02:45:31 19.0246336986259 19.0 00:09:01
174
+ points.push(new GLatLng(37.56419,-77.46928)); // 154 (728 of 1035.0) 2004-11-13T15:51:44Z 9986 02:46:26 19.1298894729944
175
+ points.push(new GLatLng(37.56601,-77.46831)); // 155 (733 of 1035.0) 2004-11-13T15:52:57Z 10059 02:47:39 19.2665026357072
176
+ points.push(new GLatLng(37.56717,-77.46763)); // 156 (738 of 1035.0) 2004-11-13T15:53:46Z 10108 02:48:28 19.3555694441862
177
+ points.push(new GLatLng(37.56908,-77.46664)); // 157 (743 of 1035.0) 2004-11-13T15:55:10Z 10192 02:49:52 19.4982903975632
178
+ points.push(new GLatLng(37.5709,-77.46559)); // 158 (748 of 1035.0) 2004-11-13T15:56:26Z 10268 02:51:08 19.6365697691457
179
+ points.push(new GLatLng(37.57275,-77.46458)); // 159 (753 of 1035.0) 2004-11-13T15:57:43Z 10345 02:52:25 19.7759892515564
180
+ points.push(new GLatLng(37.57442,-77.46363)); // 160 (758 of 1035.0) 2004-11-13T15:58:55Z 10417 02:53:37 19.9025893058583
181
+ points.push(new GLatLng(37.57612,-77.46273)); // 161 (762 of 1035.0) 2004-11-13T16:00:09Z 10491 02:54:51 20.0299635751823 20.0 00:09:20
182
+ points.push(new GLatLng(37.57756,-77.46192)); // 162 (767 of 1035.0) 2004-11-13T16:01:09Z 10551 02:55:51 20.1389567276245
183
+ points.push(new GLatLng(37.57901,-77.46151)); // 163 (772 of 1035.0) 2004-11-13T16:02:11Z 10613 02:56:53 20.2441470565457
184
+ points.push(new GLatLng(37.58073,-77.46185)); // 164 (777 of 1035.0) 2004-11-13T16:03:15Z 10677 02:57:57 20.3645207281582
185
+ points.push(new GLatLng(37.58271,-77.46222)); // 165 (782 of 1035.0) 2004-11-13T16:04:31Z 10753 02:59:13 20.5028813372448
186
+ points.push(new GLatLng(37.5847,-77.4626)); // 166 (787 of 1035.0) 2004-11-13T16:05:46Z 10828 03:00:28 20.6421529405642
187
+ points.push(new GLatLng(37.58635,-77.46314)); // 167 (792 of 1035.0) 2004-11-13T16:06:52Z 10894 03:01:34 20.7621108237411
188
+ points.push(new GLatLng(37.58822,-77.46393)); // 168 (797 of 1035.0) 2004-11-13T16:08:04Z 10966 03:02:46 20.8990465238588
189
+ points.push(new GLatLng(37.59004,-77.46415)); // 169 (801 of 1035.0) 2004-11-13T16:09:16Z 11038 03:03:58 21.0257431528371 21.0 00:09:07
190
+ points.push(new GLatLng(37.59161,-77.46331)); // 170 (806 of 1035.0) 2004-11-13T16:10:17Z 11099 03:04:59 21.1485948525263
191
+ points.push(new GLatLng(37.59318,-77.46205)); // 171 (811 of 1035.0) 2004-11-13T16:11:27Z 11169 03:06:09 21.2779675784681
192
+ points.push(new GLatLng(37.59476,-77.46061)); // 172 (816 of 1035.0) 2004-11-13T16:12:38Z 11240 03:07:20 21.4317343689817
193
+ points.push(new GLatLng(37.5935,-77.45951)); // 173 (821 of 1035.0) 2004-11-13T16:13:31Z 11293 03:08:13 21.5427436124071
194
+ points.push(new GLatLng(37.59172,-77.45859)); // 174 (826 of 1035.0) 2004-11-13T16:14:38Z 11360 03:09:20 21.684757380976
195
+ points.push(new GLatLng(37.59022,-77.45726)); // 175 (831 of 1035.0) 2004-11-13T16:15:40Z 11422 03:10:22 21.8143012352742
196
+ points.push(new GLatLng(37.58839,-77.45636)); // 176 (836 of 1035.0) 2004-11-13T16:16:47Z 11489 03:11:29 21.9505720417323
197
+ points.push(new GLatLng(37.58781,-77.45567)); // 177 (838 of 1035.0) 2004-11-13T16:17:16Z 11518 03:11:58 22.0057065657745 22.0 00:08:00
198
+ points.push(new GLatLng(37.58663,-77.45404)); // 178 (843 of 1035.0) 2004-11-13T16:18:14Z 11576 03:12:56 22.1267876778214
199
+ points.push(new GLatLng(37.58513,-77.45213)); // 179 (848 of 1035.0) 2004-11-13T16:19:31Z 11653 03:14:13 22.2740494114095
200
+ points.push(new GLatLng(37.58442,-77.45121)); // 180 (853 of 1035.0) 2004-11-13T16:20:09Z 11691 03:14:51 22.3445212134905
201
+ points.push(new GLatLng(37.58247,-77.4507)); // 181 (858 of 1035.0) 2004-11-13T16:21:21Z 11763 03:16:03 22.4865541503622
202
+ points.push(new GLatLng(37.58054,-77.45037)); // 182 (863 of 1035.0) 2004-11-13T16:22:29Z 11831 03:17:11 22.621322507128
203
+ points.push(new GLatLng(37.57854,-77.44997)); // 183 (868 of 1035.0) 2004-11-13T16:23:40Z 11902 03:18:22 22.7613020872745
204
+ points.push(new GLatLng(37.5767,-77.44967)); // 184 (873 of 1035.0) 2004-11-13T16:24:46Z 11968 03:19:28 22.8896128798193
205
+ points.push(new GLatLng(37.57511,-77.44936)); // 185 (877 of 1035.0) 2004-11-13T16:25:42Z 12024 03:20:24 23.0008056218197 23.0 00:08:26
206
+ points.push(new GLatLng(37.57326,-77.44926)); // 186 (882 of 1035.0) 2004-11-13T16:26:49Z 12091 03:21:31 23.128922959146
207
+ points.push(new GLatLng(37.57116,-77.44902)); // 187 (887 of 1035.0) 2004-11-13T16:28:03Z 12165 03:22:45 23.2747581450644
208
+ points.push(new GLatLng(37.56955,-77.44898)); // 188 (892 of 1035.0) 2004-11-13T16:29:01Z 12223 03:23:43 23.3861049737559
209
+ points.push(new GLatLng(37.56736,-77.4487)); // 189 (897 of 1035.0) 2004-11-13T16:30:18Z 12300 03:25:00 23.5386296363912
210
+ points.push(new GLatLng(37.56794,-77.44524)); // 190 (902 of 1035.0) 2004-11-13T16:31:48Z 12390 03:26:30 23.7486018435202
211
+ points.push(new GLatLng(37.56758,-77.44443)); // 191 (907 of 1035.0) 2004-11-13T16:32:19Z 12421 03:27:01 23.8117304098725
212
+ points.push(new GLatLng(37.56638,-77.44421)); // 192 (912 of 1035.0) 2004-11-13T16:33:01Z 12463 03:27:43 23.895536788925
213
+ points.push(new GLatLng(37.56485,-77.44394)); // 193 (917 of 1035.0) 2004-11-13T16:33:55Z 12517 03:28:37 24.0023242191908 24.0 00:08:13
214
+ points.push(new GLatLng(37.56324,-77.44364)); // 194 (922 of 1035.0) 2004-11-13T16:34:51Z 12573 03:29:33 24.1148209652818
215
+ points.push(new GLatLng(37.56215,-77.44306)); // 195 (927 of 1035.0) 2004-11-13T16:35:35Z 12617 03:30:17 24.1968483968297
216
+ points.push(new GLatLng(37.5606,-77.44252)); // 196 (932 of 1035.0) 2004-11-13T16:36:30Z 12672 03:31:12 24.3086090287258
217
+ points.push(new GLatLng(37.55882,-77.44254)); // 197 (937 of 1035.0) 2004-11-13T16:37:35Z 12737 03:32:17 24.4316659118825
218
+ points.push(new GLatLng(37.55732,-77.44246)); // 198 (942 of 1035.0) 2004-11-13T16:38:27Z 12789 03:33:09 24.5358411386246
219
+ points.push(new GLatLng(37.55578,-77.44196)); // 199 (947 of 1035.0) 2004-11-13T16:39:22Z 12844 03:34:04 24.645824587815
220
+ points.push(new GLatLng(37.55462,-77.44215)); // 200 (952 of 1035.0) 2004-11-13T16:40:04Z 12886 03:34:46 24.7280616224175
221
+ points.push(new GLatLng(37.55372,-77.44291)); // 201 (957 of 1035.0) 2004-11-13T16:40:44Z 12926 03:35:26 24.8031465093595
222
+ points.push(new GLatLng(37.55264,-77.44385)); // 202 (962 of 1035.0) 2004-11-13T16:41:33Z 12975 03:36:15 24.8938252776901
223
+ points.push(new GLatLng(37.55138,-77.44507)); // 203 (967 of 1035.0) 2004-11-13T16:42:33Z 13035 03:37:15 25.0037135917287 25.0 00:08:38
224
+ points.push(new GLatLng(37.55018,-77.44619)); // 204 (972 of 1035.0) 2004-11-13T16:43:32Z 13094 03:38:14 25.1070846226228
225
+ points.push(new GLatLng(37.54953,-77.44632)); // 205 (977 of 1035.0) 2004-11-13T16:44:01Z 13123 03:38:43 25.1610151878162
226
+ points.push(new GLatLng(37.54872,-77.44488)); // 206 (982 of 1035.0) 2004-11-13T16:44:51Z 13173 03:39:33 25.2578996585207
227
+ points.push(new GLatLng(37.54784,-77.44336)); // 207 (987 of 1035.0) 2004-11-13T16:45:44Z 13226 03:40:26 25.3610970714744
228
+ points.push(new GLatLng(37.54689,-77.44254)); // 208 (992 of 1035.0) 2004-11-13T16:46:26Z 13268 03:41:08 25.4455061109217
229
+ points.push(new GLatLng(37.54513,-77.44381)); // 209 (997 of 1035.0) 2004-11-13T16:47:36Z 13338 03:42:18 25.5925030441122
230
+ points.push(new GLatLng(37.54412,-77.44396)); // 210 (1002 of 1035.0) 2004-11-13T16:48:22Z 13384 03:43:04 25.6865808869399
231
+ points.push(new GLatLng(37.54277,-77.4446)); // 211 (1007 of 1035.0) 2004-11-13T16:49:17Z 13439 03:43:59 25.8021096438819
232
+ points.push(new GLatLng(37.54187,-77.44462)); // 212 (1012 of 1035.0) 2004-11-13T16:50:00Z 13482 03:44:42 25.8882232701881
233
+ points.push(new GLatLng(37.54088,-77.44291)); // 213 (1017 of 1035.0) 2004-11-13T16:50:57Z 13539 03:45:39 26.0109570902786 26.0 00:08:24
234
+ points.push(new GLatLng(37.53968,-77.44104)); // 214 (1022 of 1035.0) 2004-11-13T16:52:01Z 13603 03:46:43 26.1427957468834
235
+ points.push(new GLatLng(37.53844,-77.43934)); // 215 (1027 of 1035.0) 2004-11-13T16:52:56Z 13658 03:47:38 26.2763151706279
236
+ points.push(new GLatLng(37.53694,-77.43623)); // 216 (1032 of 1035.0) 2004-11-13T16:54:19Z 13741 03:49:01 26.4786746230576
237
+ points.push(new GLatLng(37.53674,-77.43595)); // 217 (1035 of 1035.0) 2004-11-13T16:56:17Z 13859 03:50:59 26.5328886994377
238
+
239
+ var routePolyline = new GPolyline(points);
240
+ map.addOverlay(routePolyline);
241
+
242
+ // Create a base icon for all of our markers that specifies the
243
+ // shadow, icon dimensions, etc.
244
+ var baseIcon = new GIcon();
245
+ baseIcon.shadow = "http://www.joakim-systems.com/gicons/shadow50.png";
246
+ baseIcon.iconSize = new GSize(20, 34);
247
+ baseIcon.shadowSize = new GSize(37, 34);
248
+ baseIcon.iconAnchor = new GPoint(9, 34);
249
+ baseIcon.infoWindowAnchor = new GPoint(9, 2);
250
+ baseIcon.infoShadowAnchor = new GPoint(18, 25);
251
+
252
+ var iconStart = new GIcon(baseIcon);
253
+ iconStart.image = "http://www.joakim-systems.com/gicons/dd-start.png";
254
+ var pStart = new GPoint(-77.43634, 37.54314);
255
+ var mStart = new GMarker(pStart, iconStart);
256
+ GEvent.addListener(mStart, "click", function() {
257
+ mStart.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Start!</b></td></tr><tr><td>Distance: </td><td>0.0</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:05:18Z </td></tr><tr><td>Elapsed Time: </td><td>00:00:00 </td></tr><tr><td>Average Pace: </td><td> </td></tr><tr><td>Lat/Lng: </td><td>37.54314 , -77.43634 </td></tr><tr><td>Altitude: </td><td>-55.619m </td></tr></table>");
258
+ });
259
+ map.addOverlay(mStart);
260
+
261
+ var icon1 = new GIcon(baseIcon);
262
+ icon1.image = "http://www.joakim-systems.com/gicons/marker1.png";
263
+ var p1 = new GPoint(-77.45125, 37.55133);
264
+ var m1 = new GMarker(p1, icon1);
265
+ GEvent.addListener(m1, "click", function() {
266
+ m1.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 1</b></td></tr><tr><td>Distance: </td><td>1.01289462376059</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:13:31Z </td></tr><tr><td>Elapsed Time: </td><td>00:08:13 </td></tr><tr><td>Average Pace: </td><td>8:6.7 </td></tr><tr><td>Lat/Lng: </td><td>37.55133 , -77.45125 </td></tr><tr><td>Altitude: </td><td>58.297m </td></tr></table>");
267
+ });
268
+ map.addOverlay(m1);
269
+
270
+ var icon2 = new GIcon(baseIcon);
271
+ icon2.image = "http://www.joakim-systems.com/gicons/marker2.png";
272
+ var p2 = new GPoint(-77.46582, 37.55998);
273
+ var m2 = new GMarker(p2, icon2);
274
+ GEvent.addListener(m2, "click", function() {
275
+ m2.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 2</b></td></tr><tr><td>Distance: </td><td>2.01116382087678</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:22:13Z </td></tr><tr><td>Elapsed Time: </td><td>00:16:55 </td></tr><tr><td>Average Pace: </td><td>8:24.7 </td></tr><tr><td>Lat/Lng: </td><td>37.55998 , -77.46582 </td></tr><tr><td>Altitude: </td><td>64.065m </td></tr></table>");
276
+ });
277
+ map.addOverlay(m2);
278
+
279
+ var icon3 = new GIcon(baseIcon);
280
+ icon3.image = "http://www.joakim-systems.com/gicons/marker3.png";
281
+ var p3 = new GPoint(-77.47962, 37.56556);
282
+ var m3 = new GMarker(p3, icon3);
283
+ GEvent.addListener(m3, "click", function() {
284
+ m3.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 3</b></td></tr><tr><td>Distance: </td><td>3.01714523951085</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:30:40Z </td></tr><tr><td>Elapsed Time: </td><td>00:25:22 </td></tr><tr><td>Average Pace: </td><td>8:24.5 </td></tr><tr><td>Lat/Lng: </td><td>37.56556 , -77.47962 </td></tr><tr><td>Altitude: </td><td>60.7m </td></tr></table>");
285
+ });
286
+ map.addOverlay(m3);
287
+
288
+ var icon4 = new GIcon(baseIcon);
289
+ icon4.image = "http://www.joakim-systems.com/gicons/marker4.png";
290
+ var p4 = new GPoint(-77.49374, 37.57262);
291
+ var m4 = new GMarker(p4, icon4);
292
+ GEvent.addListener(m4, "click", function() {
293
+ m4.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 4</b></td></tr><tr><td>Distance: </td><td>4.02676900463497</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:39:11Z </td></tr><tr><td>Elapsed Time: </td><td>00:33:53 </td></tr><tr><td>Average Pace: </td><td>8:24.9 </td></tr><tr><td>Lat/Lng: </td><td>37.57262 , -77.49374 </td></tr><tr><td>Altitude: </td><td>117.418m </td></tr></table>");
294
+ });
295
+ map.addOverlay(m4);
296
+
297
+ var icon5 = new GIcon(baseIcon);
298
+ icon5.image = "http://www.joakim-systems.com/gicons/marker5.png";
299
+ var p5 = new GPoint(-77.5055, 37.56837);
300
+ var m5 = new GMarker(p5, icon5);
301
+ GEvent.addListener(m5, "click", function() {
302
+ m5.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 5</b></td></tr><tr><td>Distance: </td><td>5.00592810598917</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:47:37Z </td></tr><tr><td>Elapsed Time: </td><td>00:42:19 </td></tr><tr><td>Average Pace: </td><td>8:27.2 </td></tr><tr><td>Lat/Lng: </td><td>37.56837 , -77.5055 </td></tr><tr><td>Altitude: </td><td>84.253m </td></tr></table>");
303
+ });
304
+ map.addOverlay(m5);
305
+
306
+ var icon6 = new GIcon(baseIcon);
307
+ icon6.image = "http://www.joakim-systems.com/gicons/marker6.png";
308
+ var p6 = new GPoint(-77.51842, 37.56904);
309
+ var m6 = new GMarker(p6, icon6);
310
+ GEvent.addListener(m6, "click", function() {
311
+ m6.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 6</b></td></tr><tr><td>Distance: </td><td>6.01495659469438</td></tr><tr><td>Time of Day: </td><td>2004-11-13T13:56:31Z </td></tr><tr><td>Elapsed Time: </td><td>00:51:13 </td></tr><tr><td>Average Pace: </td><td>8:30.9 </td></tr><tr><td>Lat/Lng: </td><td>37.56904 , -77.51842 </td></tr><tr><td>Altitude: </td><td>78.485m </td></tr></table>");
312
+ });
313
+ map.addOverlay(m6);
314
+
315
+ var icon7 = new GIcon(baseIcon);
316
+ icon7.image = "http://www.joakim-systems.com/gicons/marker7.png";
317
+ var p7 = new GPoint(-77.5358, 37.56792);
318
+ var m7 = new GMarker(p7, icon7);
319
+ GEvent.addListener(m7, "click", function() {
320
+ m7.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 7</b></td></tr><tr><td>Distance: </td><td>7.00675373221606</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:04:52Z </td></tr><tr><td>Elapsed Time: </td><td>00:59:34 </td></tr><tr><td>Average Pace: </td><td>8:30.1 </td></tr><tr><td>Lat/Lng: </td><td>37.56792 , -77.5358 </td></tr><tr><td>Altitude: </td><td>45.8m </td></tr></table>");
321
+ });
322
+ map.addOverlay(m7);
323
+
324
+ var icon8 = new GIcon(baseIcon);
325
+ icon8.image = "http://www.joakim-systems.com/gicons/marker8.png";
326
+ var p8 = new GPoint(-77.54459, 37.55773);
327
+ var m8 = new GMarker(p8, icon8);
328
+ GEvent.addListener(m8, "click", function() {
329
+ m8.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 8</b></td></tr><tr><td>Distance: </td><td>8.00799174367724</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:13:25Z </td></tr><tr><td>Elapsed Time: </td><td>01:08:07 </td></tr><tr><td>Average Pace: </td><td>8:30.4 </td></tr><tr><td>Lat/Lng: </td><td>37.55773 , -77.54459 </td></tr><tr><td>Altitude: </td><td>50.126m </td></tr></table>");
330
+ });
331
+ map.addOverlay(m8);
332
+
333
+ var icon9 = new GIcon(baseIcon);
334
+ icon9.image = "http://www.joakim-systems.com/gicons/marker9.png";
335
+ var p9 = new GPoint(-77.52779, 37.55807);
336
+ var m9 = new GMarker(p9, icon9);
337
+ GEvent.addListener(m9, "click", function() {
338
+ m9.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 9</b></td></tr><tr><td>Distance: </td><td>9.02402181848259</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:22:21Z </td></tr><tr><td>Elapsed Time: </td><td>01:17:03 </td></tr><tr><td>Average Pace: </td><td>8:32.3 </td></tr><tr><td>Lat/Lng: </td><td>37.55807 , -77.52779 </td></tr><tr><td>Altitude: </td><td>35.225m </td></tr></table>");
339
+ });
340
+ map.addOverlay(m9);
341
+
342
+ var icon10 = new GIcon(baseIcon);
343
+ icon10.image = "http://www.joakim-systems.com/gicons/marker10.png";
344
+ var p10 = new GPoint(-77.51704, 37.54797);
345
+ var m10 = new GMarker(p10, icon10);
346
+ GEvent.addListener(m10, "click", function() {
347
+ m10.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 10</b></td></tr><tr><td>Distance: </td><td>10.0138818614913</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:30:57Z </td></tr><tr><td>Elapsed Time: </td><td>01:25:39 </td></tr><tr><td>Average Pace: </td><td>8:33.2 </td></tr><tr><td>Lat/Lng: </td><td>37.54797 , -77.51704 </td></tr><tr><td>Altitude: </td><td>38.59m </td></tr></table>");
348
+ });
349
+ map.addOverlay(m10);
350
+
351
+ var icon11 = new GIcon(baseIcon);
352
+ icon11.image = "http://www.joakim-systems.com/gicons/marker11.png";
353
+ var p11 = new GPoint(-77.51548, 37.53674);
354
+ var m11 = new GMarker(p11, icon11);
355
+ GEvent.addListener(m11, "click", function() {
356
+ m11.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 11</b></td></tr><tr><td>Distance: </td><td>11.0161035772686</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:39:42Z </td></tr><tr><td>Elapsed Time: </td><td>01:34:24 </td></tr><tr><td>Average Pace: </td><td>8:34.2 </td></tr><tr><td>Lat/Lng: </td><td>37.53674 , -77.51548 </td></tr><tr><td>Altitude: </td><td>65.026m </td></tr></table>");
357
+ });
358
+ map.addOverlay(m11);
359
+
360
+ var icon12 = new GIcon(baseIcon);
361
+ icon12.image = "http://www.joakim-systems.com/gicons/marker12.png";
362
+ var p12 = new GPoint(-77.50114, 37.52852);
363
+ var m12 = new GMarker(p12, icon12);
364
+ GEvent.addListener(m12, "click", function() {
365
+ m12.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 12</b></td></tr><tr><td>Distance: </td><td>12.0281665281782</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:48:46Z </td></tr><tr><td>Elapsed Time: </td><td>01:43:28 </td></tr><tr><td>Average Pace: </td><td>8:36.1 </td></tr><tr><td>Lat/Lng: </td><td>37.52852 , -77.50114 </td></tr><tr><td>Altitude: </td><td>65.988m </td></tr></table>");
366
+ });
367
+ map.addOverlay(m12);
368
+
369
+ var icon13 = new GIcon(baseIcon);
370
+ icon13.image = "http://www.joakim-systems.com/gicons/marker13.png";
371
+ var p13 = new GPoint(-77.4864, 37.52069);
372
+ var m13 = new GMarker(p13, icon13);
373
+ GEvent.addListener(m13, "click", function() {
374
+ m13.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 13</b></td></tr><tr><td>Distance: </td><td>13.0115110937403</td></tr><tr><td>Time of Day: </td><td>2004-11-13T14:57:29Z </td></tr><tr><td>Elapsed Time: </td><td>01:52:11 </td></tr><tr><td>Average Pace: </td><td>8:37.3 </td></tr><tr><td>Lat/Lng: </td><td>37.52069 , -77.4864 </td></tr><tr><td>Altitude: </td><td>66.949m </td></tr></table>");
375
+ });
376
+ map.addOverlay(m13);
377
+
378
+ var icon14 = new GIcon(baseIcon);
379
+ icon14.image = "http://www.joakim-systems.com/gicons/marker14.png";
380
+ var p14 = new GPoint(-77.46936, 37.5158);
381
+ var m14 = new GMarker(p14, icon14);
382
+ GEvent.addListener(m14, "click", function() {
383
+ m14.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 14</b></td></tr><tr><td>Distance: </td><td>14.0275831220463</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:06:21Z </td></tr><tr><td>Elapsed Time: </td><td>02:01:03 </td></tr><tr><td>Average Pace: </td><td>8:37.8 </td></tr><tr><td>Lat/Lng: </td><td>37.5158 , -77.46936 </td></tr><tr><td>Altitude: </td><td>65.988m </td></tr></table>");
384
+ });
385
+ map.addOverlay(m14);
386
+
387
+ var icon15 = new GIcon(baseIcon);
388
+ icon15.image = "http://www.joakim-systems.com/gicons/marker15.png";
389
+ var p15 = new GPoint(-77.45353, 37.52243);
390
+ var m15 = new GMarker(p15, icon15);
391
+ GEvent.addListener(m15, "click", function() {
392
+ m15.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 15</b></td></tr><tr><td>Distance: </td><td>15.0136522026628</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:14:57Z </td></tr><tr><td>Elapsed Time: </td><td>02:09:39 </td></tr><tr><td>Average Pace: </td><td>8:38.1 </td></tr><tr><td>Lat/Lng: </td><td>37.52243 , -77.45353 </td></tr><tr><td>Altitude: </td><td>39.551m </td></tr></table>");
393
+ });
394
+ map.addOverlay(m15);
395
+
396
+ var icon16 = new GIcon(baseIcon);
397
+ icon16.image = "http://www.joakim-systems.com/gicons/marker16.png";
398
+ var p16 = new GPoint(-77.44947, 37.53578);
399
+ var m16 = new GMarker(p16, icon16);
400
+ GEvent.addListener(m16, "click", function() {
401
+ m16.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 16</b></td></tr><tr><td>Distance: </td><td>16.0125529444477</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:23:51Z </td></tr><tr><td>Elapsed Time: </td><td>02:18:33 </td></tr><tr><td>Average Pace: </td><td>8:39.2 </td></tr><tr><td>Lat/Lng: </td><td>37.53578 , -77.44947 </td></tr><tr><td>Altitude: </td><td>49.165m </td></tr></table>");
402
+ });
403
+ map.addOverlay(m16);
404
+
405
+ var icon17 = new GIcon(baseIcon);
406
+ icon17.image = "http://www.joakim-systems.com/gicons/marker17.png";
407
+ var p17 = new GPoint(-77.45559, 37.5458);
408
+ var m17 = new GMarker(p17, icon17);
409
+ GEvent.addListener(m17, "click", function() {
410
+ m17.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 17</b></td></tr><tr><td>Distance: </td><td>17.0648110183381</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:33:31Z </td></tr><tr><td>Elapsed Time: </td><td>02:28:13 </td></tr><tr><td>Average Pace: </td><td>8:41.1 </td></tr><tr><td>Lat/Lng: </td><td>37.5458 , -77.45559 </td></tr><tr><td>Altitude: </td><td>58.778m </td></tr></table>");
411
+ });
412
+ map.addOverlay(m17);
413
+
414
+ var icon18 = new GIcon(baseIcon);
415
+ icon18.image = "http://www.joakim-systems.com/gicons/marker18.png";
416
+ var p18 = new GPoint(-77.47121, 37.5511);
417
+ var m18 = new GMarker(p18, icon18);
418
+ GEvent.addListener(m18, "click", function() {
419
+ m18.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 18</b></td></tr><tr><td>Distance: </td><td>18.0018378406249</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:41:48Z </td></tr><tr><td>Elapsed Time: </td><td>02:36:30 </td></tr><tr><td>Average Pace: </td><td>8:41.6 </td></tr><tr><td>Lat/Lng: </td><td>37.5511 , -77.47121 </td></tr><tr><td>Altitude: </td><td>71.755m </td></tr></table>");
420
+ });
421
+ map.addOverlay(m18);
422
+
423
+ var icon19 = new GIcon(baseIcon);
424
+ icon19.image = "http://www.joakim-systems.com/gicons/marker19.png";
425
+ var p19 = new GPoint(-77.47003, 37.56279);
426
+ var m19 = new GMarker(p19, icon19);
427
+ GEvent.addListener(m19, "click", function() {
428
+ m19.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 19</b></td></tr><tr><td>Distance: </td><td>19.0246336986259</td></tr><tr><td>Time of Day: </td><td>2004-11-13T15:50:49Z </td></tr><tr><td>Elapsed Time: </td><td>02:45:31 </td></tr><tr><td>Average Pace: </td><td>8:42.0 </td></tr><tr><td>Lat/Lng: </td><td>37.56279 , -77.47003 </td></tr><tr><td>Altitude: </td><td>67.91m </td></tr></table>");
429
+ });
430
+ map.addOverlay(m19);
431
+
432
+ var icon20 = new GIcon(baseIcon);
433
+ icon20.image = "http://www.joakim-systems.com/gicons/marker20.png";
434
+ var p20 = new GPoint(-77.46273, 37.57612);
435
+ var m20 = new GMarker(p20, icon20);
436
+ GEvent.addListener(m20, "click", function() {
437
+ m20.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 20</b></td></tr><tr><td>Distance: </td><td>20.0299635751823</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:00:09Z </td></tr><tr><td>Elapsed Time: </td><td>02:54:51 </td></tr><tr><td>Average Pace: </td><td>8:43.8 </td></tr><tr><td>Lat/Lng: </td><td>37.57612 , -77.46273 </td></tr><tr><td>Altitude: </td><td>62.142m </td></tr></table>");
438
+ });
439
+ map.addOverlay(m20);
440
+
441
+ var icon21 = new GIcon(baseIcon);
442
+ icon21.image = "http://www.joakim-systems.com/gicons/marker21.png";
443
+ var p21 = new GPoint(-77.46415, 37.59004);
444
+ var m21 = new GMarker(p21, icon21);
445
+ GEvent.addListener(m21, "click", function() {
446
+ m21.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 21</b></td></tr><tr><td>Distance: </td><td>21.0257431528371</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:09:16Z </td></tr><tr><td>Elapsed Time: </td><td>03:03:58 </td></tr><tr><td>Average Pace: </td><td>8:45.0 </td></tr><tr><td>Lat/Lng: </td><td>37.59004 , -77.46415 </td></tr><tr><td>Altitude: </td><td>62.142m </td></tr></table>");
447
+ });
448
+ map.addOverlay(m21);
449
+
450
+ var icon22 = new GIcon(baseIcon);
451
+ icon22.image = "http://www.joakim-systems.com/gicons/marker22.png";
452
+ var p22 = new GPoint(-77.45567, 37.58781);
453
+ var m22 = new GMarker(p22, icon22);
454
+ GEvent.addListener(m22, "click", function() {
455
+ m22.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 22</b></td></tr><tr><td>Distance: </td><td>22.0057065657745</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:17:16Z </td></tr><tr><td>Elapsed Time: </td><td>03:11:58 </td></tr><tr><td>Average Pace: </td><td>8:43.4 </td></tr><tr><td>Lat/Lng: </td><td>37.58781 , -77.45567 </td></tr><tr><td>Altitude: </td><td>60.7m </td></tr></table>");
456
+ });
457
+ map.addOverlay(m22);
458
+
459
+ var icon23 = new GIcon(baseIcon);
460
+ icon23.image = "http://www.joakim-systems.com/gicons/marker23.png";
461
+ var p23 = new GPoint(-77.44936, 37.57511);
462
+ var m23 = new GMarker(p23, icon23);
463
+ GEvent.addListener(m23, "click", function() {
464
+ m23.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 23</b></td></tr><tr><td>Distance: </td><td>23.0008056218197</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:25:42Z </td></tr><tr><td>Elapsed Time: </td><td>03:20:24 </td></tr><tr><td>Average Pace: </td><td>8:42.8 </td></tr><tr><td>Lat/Lng: </td><td>37.57511 , -77.44936 </td></tr><tr><td>Altitude: </td><td>64.065m </td></tr></table>");
465
+ });
466
+ map.addOverlay(m23);
467
+
468
+ var icon24 = new GIcon(baseIcon);
469
+ icon24.image = "http://www.joakim-systems.com/gicons/marker24.png";
470
+ var p24 = new GPoint(-77.44394, 37.56485);
471
+ var m24 = new GMarker(p24, icon24);
472
+ GEvent.addListener(m24, "click", function() {
473
+ m24.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 24</b></td></tr><tr><td>Distance: </td><td>24.0023242191908</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:33:55Z </td></tr><tr><td>Elapsed Time: </td><td>03:28:37 </td></tr><tr><td>Average Pace: </td><td>8:41.5 </td></tr><tr><td>Lat/Lng: </td><td>37.56485 , -77.44394 </td></tr><tr><td>Altitude: </td><td>55.413m </td></tr></table>");
474
+ });
475
+ map.addOverlay(m24);
476
+
477
+ var icon25 = new GIcon(baseIcon);
478
+ icon25.image = "http://www.joakim-systems.com/gicons/marker25.png";
479
+ var p25 = new GPoint(-77.44507, 37.55138);
480
+ var m25 = new GMarker(p25, icon25);
481
+ GEvent.addListener(m25, "click", function() {
482
+ m25.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 25</b></td></tr><tr><td>Distance: </td><td>25.0037135917287</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:42:33Z </td></tr><tr><td>Elapsed Time: </td><td>03:37:15 </td></tr><tr><td>Average Pace: </td><td>8:41.3 </td></tr><tr><td>Lat/Lng: </td><td>37.55138 , -77.44507 </td></tr><tr><td>Altitude: </td><td>48.203m </td></tr></table>");
483
+ });
484
+ map.addOverlay(m25);
485
+
486
+ var icon26 = new GIcon(baseIcon);
487
+ icon26.image = "http://www.joakim-systems.com/gicons/marker26.png";
488
+ var p26 = new GPoint(-77.44291, 37.54088);
489
+ var m26 = new GMarker(p26, icon26);
490
+ GEvent.addListener(m26, "click", function() {
491
+ m26.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Checkpoint 26</b></td></tr><tr><td>Distance: </td><td>26.0109570902786</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:50:57Z </td></tr><tr><td>Elapsed Time: </td><td>03:45:39 </td></tr><tr><td>Average Pace: </td><td>8:40.5 </td></tr><tr><td>Lat/Lng: </td><td>37.54088 , -77.44291 </td></tr><tr><td>Altitude: </td><td>57.817m </td></tr></table>");
492
+ });
493
+ map.addOverlay(m26);
494
+
495
+ var iconFinish = new GIcon(baseIcon);
496
+ iconFinish.image = "http://www.joakim-systems.com/gicons/dd-end.png";
497
+ var pFinish = new GPoint(-77.43595, 37.53674);
498
+ var mFinish = new GMarker(pFinish, iconFinish);
499
+ GEvent.addListener(mFinish, "click", function() {
500
+ mFinish.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Finish!</b></td></tr><tr><td>Distance: </td><td>26.5328886994377</td></tr><tr><td>Time of Day: </td><td>2004-11-13T16:56:17Z </td></tr><tr><td>Elapsed Time: </td><td>03:50:59 </td></tr><tr><td>Average Pace: </td><td>8:42.3 </td></tr><tr><td>Lat/Lng: </td><td>37.53674 , -77.43595 </td></tr><tr><td>Altitude: </td><td>15.518m </td></tr></table>");
501
+ });
502
+ map.addOverlay(mFinish);
503
+
504
+
505
+
506
+
507
+ GEvent.addListener(map, "click", function() {
508
+ var center = map.getCenter();
509
+
510
+ document.getElementById("messages").innerHTML = 'click: ' + center.toString();
511
+ });
512
+ GEvent.addListener(map, "moveend", function() {
513
+ var center = map.getCenter();
514
+
515
+ document.getElementById("messages").innerHTML = 'moveend: ' + center.toString();
516
+ });
517
+
518
+ }
519
+ }
520
+ //]]>
521
+
522
+ </script>
523
+ </head>
524
+ <body onload="load()" onunload="GUnload()">
525
+ <center>
526
+ <h3> Richmond Marathon - 2004-11-13 </h3>
527
+ <h5> Generated by Gooby Sun Feb 25 12:00:27 EST 2007 <br> Gooby = Google APIs + Ruby </h5>
528
+ <div id="map" style="width: 900px; height: 600px"></div>
529
+ <div id="messages"></div>
530
+ </center>
531
+ </body>
532
+ </html>