graticule 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. data/.autotest +13 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +14 -0
  4. data/CHANGELOG.txt +4 -1
  5. data/Gemfile +7 -0
  6. data/LICENSE.txt +1 -1
  7. data/README.md +122 -0
  8. data/Rakefile +78 -0
  9. data/graticule.gemspec +26 -0
  10. data/lib/graticule/cli.rb +3 -1
  11. data/lib/graticule/geocoder/google.rb +33 -4
  12. data/lib/graticule/geocoder/mapquest.rb +52 -59
  13. data/lib/graticule/precision.rb +3 -1
  14. data/lib/graticule/version.rb +1 -1
  15. data/site/index.html +114 -0
  16. data/site/plugin.html +82 -0
  17. data/site/stylesheets/style.css +69 -0
  18. data/test/config.yml.default +33 -0
  19. data/test/fixtures/responses/freethepostcode/not_found.txt +3 -0
  20. data/test/fixtures/responses/freethepostcode/success.txt +2 -0
  21. data/test/fixtures/responses/geocoder_ca/success.xml +12 -0
  22. data/test/fixtures/responses/geocoder_us/success.xml +8 -0
  23. data/test/fixtures/responses/geocoder_us/unknown.xml +1 -0
  24. data/test/fixtures/responses/geonames/missing.xml +4 -0
  25. data/test/fixtures/responses/geonames/success.xml +14 -0
  26. data/test/fixtures/responses/geonames/unknown.xml +4 -0
  27. data/test/fixtures/responses/google/address.json +64 -0
  28. data/test/fixtures/responses/google/badkey.json +4 -0
  29. data/test/fixtures/responses/google/country.json +43 -0
  30. data/test/fixtures/responses/google/limit.json +4 -0
  31. data/test/fixtures/responses/google/locality.json +58 -0
  32. data/test/fixtures/responses/google/region.json +48 -0
  33. data/test/fixtures/responses/google/server_error.json +4 -0
  34. data/test/fixtures/responses/google/street.json +58 -0
  35. data/test/fixtures/responses/google/success.json +64 -0
  36. data/test/fixtures/responses/google/success_multiple_results.json +68 -0
  37. data/test/fixtures/responses/google/zero_results.json +4 -0
  38. data/test/fixtures/responses/host_ip/private.txt +4 -0
  39. data/test/fixtures/responses/host_ip/success.txt +4 -0
  40. data/test/fixtures/responses/host_ip/unknown.txt +4 -0
  41. data/test/fixtures/responses/local_search_maps/empty.txt +1 -0
  42. data/test/fixtures/responses/local_search_maps/not_found.txt +1 -0
  43. data/test/fixtures/responses/local_search_maps/success.txt +1 -0
  44. data/test/fixtures/responses/mapquest/multi_result.xml +317 -0
  45. data/test/fixtures/responses/mapquest/success.xml +54 -0
  46. data/test/fixtures/responses/multimap/missing_params.xml +4 -0
  47. data/test/fixtures/responses/multimap/no_matches.xml +4 -0
  48. data/test/fixtures/responses/multimap/success.xml +19 -0
  49. data/test/fixtures/responses/simple_geo/error.json +4 -0
  50. data/test/fixtures/responses/simple_geo/success.json +255 -0
  51. data/test/fixtures/responses/yahoo/success.xml +3 -0
  52. data/test/fixtures/responses/yahoo/unknown_address.xml +6 -0
  53. data/test/fixtures/responses/yandex/badkey.xml +5 -0
  54. data/test/fixtures/responses/yandex/success.xml +204 -0
  55. data/test/graticule/distance_test.rb +59 -0
  56. data/test/graticule/geocoder/freethepostcode_test.rb +37 -0
  57. data/test/graticule/geocoder/geocoder_ca_test.rb +42 -0
  58. data/test/graticule/geocoder/geocoder_us_test.rb +44 -0
  59. data/test/graticule/geocoder/geocoders.rb +56 -0
  60. data/test/graticule/geocoder/geonames_test.rb +56 -0
  61. data/test/graticule/geocoder/google_signed_test.rb +19 -0
  62. data/test/graticule/geocoder/google_test.rb +138 -0
  63. data/test/graticule/geocoder/host_ip_test.rb +41 -0
  64. data/test/graticule/geocoder/local_search_maps_test.rb +31 -0
  65. data/test/graticule/geocoder/mapquest_test.rb +56 -0
  66. data/test/graticule/geocoder/multi_test.rb +52 -0
  67. data/test/graticule/geocoder/multimap_test.rb +53 -0
  68. data/test/graticule/geocoder/simple_geo_test.rb +45 -0
  69. data/test/graticule/geocoder/yahoo_test.rb +50 -0
  70. data/test/graticule/geocoder/yandex_test.rb +42 -0
  71. data/test/graticule/geocoder_test.rb +24 -0
  72. data/test/graticule/location_test.rb +79 -0
  73. data/test/graticule/precision_test.rb +38 -0
  74. data/test/mocks/uri.rb +53 -0
  75. data/test/test_helper.rb +32 -0
  76. metadata +147 -75
  77. data/README.textile +0 -64
@@ -0,0 +1,4 @@
1
+ {
2
+ "results" : [],
3
+ "status" : "REQUEST_DENIED"
4
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "results" : [
3
+ {
4
+ "address_components" : [
5
+ {
6
+ "long_name" : "United States",
7
+ "short_name" : "US",
8
+ "types" : [ "country", "political" ]
9
+ }
10
+ ],
11
+ "formatted_address" : "United States",
12
+ "geometry" : {
13
+ "bounds" : {
14
+ "northeast" : {
15
+ "lat" : 71.3898880,
16
+ "lng" : -66.94976079999999
17
+ },
18
+ "southwest" : {
19
+ "lat" : 18.91106420,
20
+ "lng" : 172.45469660
21
+ }
22
+ },
23
+ "location" : {
24
+ "lat" : 37.090240,
25
+ "lng" : -95.7128910
26
+ },
27
+ "location_type" : "APPROXIMATE",
28
+ "viewport" : {
29
+ "northeast" : {
30
+ "lat" : 49.380,
31
+ "lng" : -66.940
32
+ },
33
+ "southwest" : {
34
+ "lat" : 25.820,
35
+ "lng" : -124.390
36
+ }
37
+ }
38
+ },
39
+ "types" : [ "country", "political" ]
40
+ }
41
+ ],
42
+ "status" : "OK"
43
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "results" : [],
3
+ "status" : "OVER_QUERY_LIMIT"
4
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "results" : [
3
+ {
4
+ "address_components" : [
5
+ {
6
+ "long_name" : "San Francisco",
7
+ "short_name" : "SF",
8
+ "types" : [ "locality", "political" ]
9
+ },
10
+ {
11
+ "long_name" : "San Francisco",
12
+ "short_name" : "San Francisco",
13
+ "types" : [ "administrative_area_level_2", "political" ]
14
+ },
15
+ {
16
+ "long_name" : "California",
17
+ "short_name" : "CA",
18
+ "types" : [ "administrative_area_level_1", "political" ]
19
+ },
20
+ {
21
+ "long_name" : "United States",
22
+ "short_name" : "US",
23
+ "types" : [ "country", "political" ]
24
+ }
25
+ ],
26
+ "formatted_address" : "San Francisco, CA, USA",
27
+ "geometry" : {
28
+ "bounds" : {
29
+ "northeast" : {
30
+ "lat" : 37.92977070,
31
+ "lng" : -122.32791490
32
+ },
33
+ "southwest" : {
34
+ "lat" : 37.69333540,
35
+ "lng" : -123.10777330
36
+ }
37
+ },
38
+ "location" : {
39
+ "lat" : 37.77492950,
40
+ "lng" : -122.41941550
41
+ },
42
+ "location_type" : "APPROXIMATE",
43
+ "viewport" : {
44
+ "northeast" : {
45
+ "lat" : 37.8120,
46
+ "lng" : -122.34820
47
+ },
48
+ "southwest" : {
49
+ "lat" : 37.70339999999999,
50
+ "lng" : -122.5270
51
+ }
52
+ }
53
+ },
54
+ "types" : [ "locality", "political" ]
55
+ }
56
+ ],
57
+ "status" : "OK"
58
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "results" : [
3
+ {
4
+ "address_components" : [
5
+ {
6
+ "long_name" : "California",
7
+ "short_name" : "CA",
8
+ "types" : [ "administrative_area_level_1", "political" ]
9
+ },
10
+ {
11
+ "long_name" : "United States",
12
+ "short_name" : "US",
13
+ "types" : [ "country", "political" ]
14
+ }
15
+ ],
16
+ "formatted_address" : "California, USA",
17
+ "geometry" : {
18
+ "bounds" : {
19
+ "northeast" : {
20
+ "lat" : 42.00951690,
21
+ "lng" : -114.1312110
22
+ },
23
+ "southwest" : {
24
+ "lat" : 32.53423210,
25
+ "lng" : -124.40961960
26
+ }
27
+ },
28
+ "location" : {
29
+ "lat" : 36.7782610,
30
+ "lng" : -119.41793240
31
+ },
32
+ "location_type" : "APPROXIMATE",
33
+ "viewport" : {
34
+ "northeast" : {
35
+ "lat" : 42.00951690,
36
+ "lng" : -114.1312110
37
+ },
38
+ "southwest" : {
39
+ "lat" : 32.53423210,
40
+ "lng" : -124.40961960
41
+ }
42
+ }
43
+ },
44
+ "types" : [ "administrative_area_level_1", "political" ]
45
+ }
46
+ ],
47
+ "status" : "OK"
48
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "results" : [],
3
+ "status" : "UNKNOWN_ERROR"
4
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "results" : [
3
+ {
4
+ "address_components" : [
5
+ {
6
+ "long_name" : "Amphitheatre Parkway",
7
+ "short_name" : "Amphitheatre Pkwy",
8
+ "types" : [ "route" ]
9
+ },
10
+ {
11
+ "long_name" : "Mountain View",
12
+ "short_name" : "Mountain View",
13
+ "types" : [ "locality", "political" ]
14
+ },
15
+ {
16
+ "long_name" : "California",
17
+ "short_name" : "CA",
18
+ "types" : [ "administrative_area_level_1", "political" ]
19
+ },
20
+ {
21
+ "long_name" : "United States",
22
+ "short_name" : "US",
23
+ "types" : [ "country", "political" ]
24
+ }
25
+ ],
26
+ "formatted_address" : "Amphitheatre Parkway, Mountain View, CA, USA",
27
+ "geometry" : {
28
+ "bounds" : {
29
+ "northeast" : {
30
+ "lat" : 37.4267180,
31
+ "lng" : -122.07792340
32
+ },
33
+ "southwest" : {
34
+ "lat" : 37.42070340000001,
35
+ "lng" : -122.09319780
36
+ }
37
+ },
38
+ "location" : {
39
+ "lat" : 37.42325960000001,
40
+ "lng" : -122.08563830
41
+ },
42
+ "location_type" : "GEOMETRIC_CENTER",
43
+ "viewport" : {
44
+ "northeast" : {
45
+ "lat" : 37.4267180,
46
+ "lng" : -122.07792340
47
+ },
48
+ "southwest" : {
49
+ "lat" : 37.42070340000001,
50
+ "lng" : -122.09319780
51
+ }
52
+ }
53
+ },
54
+ "types" : [ "route" ]
55
+ }
56
+ ],
57
+ "status" : "OK"
58
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "results" : [
3
+ {
4
+ "address_components" : [
5
+ {
6
+ "long_name" : "1600",
7
+ "short_name" : "1600",
8
+ "types" : [ "street_number" ]
9
+ },
10
+ {
11
+ "long_name" : "Amphitheatre Parkway",
12
+ "short_name" : "Amphitheatre Pkwy",
13
+ "types" : [ "route" ]
14
+ },
15
+ {
16
+ "long_name" : "Mountain View",
17
+ "short_name" : "Mountain View",
18
+ "types" : [ "locality", "political" ]
19
+ },
20
+ {
21
+ "long_name" : "Santa Clara",
22
+ "short_name" : "Santa Clara",
23
+ "types" : [ "administrative_area_level_2", "political" ]
24
+ },
25
+ {
26
+ "long_name" : "California",
27
+ "short_name" : "CA",
28
+ "types" : [ "administrative_area_level_1", "political" ]
29
+ },
30
+ {
31
+ "long_name" : "United States",
32
+ "short_name" : "US",
33
+ "types" : [ "country", "political" ]
34
+ },
35
+ {
36
+ "long_name" : "94043",
37
+ "short_name" : "94043",
38
+ "types" : [ "postal_code" ]
39
+ }
40
+ ],
41
+ "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
42
+ "geometry" : {
43
+ "location" : {
44
+ "lat" : 37.4216410,
45
+ "lng" : -122.08550160
46
+ },
47
+ "location_type" : "ROOFTOP",
48
+ "viewport" : {
49
+ "northeast" : {
50
+ "lat" : 37.42298998029150,
51
+ "lng" : -122.0841526197085
52
+ },
53
+ "southwest" : {
54
+ "lat" : 37.42029201970850,
55
+ "lng" : -122.0868505802915
56
+ }
57
+ }
58
+ },
59
+ "partial_match" : true,
60
+ "types" : [ "street_address" ]
61
+ }
62
+ ],
63
+ "status" : "OK"
64
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "results" : [
3
+ {
4
+ "address_components" : [
5
+ {
6
+ "long_name" : "Queen Street West",
7
+ "short_name" : "Queen St W",
8
+ "types" : [ "route" ]
9
+ },
10
+ {
11
+ "long_name" : "Old Toronto",
12
+ "short_name" : "Old Toronto",
13
+ "types" : [ "sublocality", "political" ]
14
+ },
15
+ {
16
+ "long_name" : "Toronto",
17
+ "short_name" : "Toronto",
18
+ "types" : [ "locality", "political" ]
19
+ },
20
+ {
21
+ "long_name" : "Toronto",
22
+ "short_name" : "Toronto",
23
+ "types" : [ "administrative_area_level_2", "political" ]
24
+ },
25
+ {
26
+ "long_name" : "Ontario",
27
+ "short_name" : "ON",
28
+ "types" : [ "administrative_area_level_1", "political" ]
29
+ },
30
+ {
31
+ "long_name" : "Canada",
32
+ "short_name" : "CA",
33
+ "types" : [ "country", "political" ]
34
+ }
35
+ ],
36
+ "formatted_address" : "Queen Street West, Toronto, ON, Canada",
37
+ "geometry" : {
38
+ "bounds" : {
39
+ "northeast" : {
40
+ "lat" : 43.65350280,
41
+ "lng" : -79.37926539999999
42
+ },
43
+ "southwest" : {
44
+ "lat" : 43.63874020,
45
+ "lng" : -79.44593279999999
46
+ }
47
+ },
48
+ "location" : {
49
+ "lat" : 43.6453370,
50
+ "lng" : -79.4132080
51
+ },
52
+ "location_type" : "GEOMETRIC_CENTER",
53
+ "viewport" : {
54
+ "northeast" : {
55
+ "lat" : 43.65350280,
56
+ "lng" : -79.37926539999999
57
+ },
58
+ "southwest" : {
59
+ "lat" : 43.63874020,
60
+ "lng" : -79.44593279999999
61
+ }
62
+ }
63
+ },
64
+ "types" : [ "route" ]
65
+ }
66
+ ],
67
+ "status" : "OK"
68
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "results" : [],
3
+ "status" : "ZERO_RESULTS"
4
+ }
@@ -0,0 +1,4 @@
1
+ Country: (Private Address) (XX)
2
+ City: (Private Address)
3
+ Latitude:
4
+ Longitude:
@@ -0,0 +1,4 @@
1
+ Country: UNITED STATES (US)
2
+ City: Mountain View, CA
3
+ Latitude: 37.402
4
+ Longitude: -122.078
@@ -0,0 +1,4 @@
1
+ Country: (Unknown Country?) (XX)
2
+ City: (Unknown City?)
3
+ Latitude:
4
+ Longitude:
@@ -0,0 +1 @@
1
+ alert('Please provide a location');
@@ -0,0 +1 @@
1
+ alert('location not found');
@@ -0,0 +1 @@
1
+ map.centerAndZoom(new GPoint(-0.130427, 51.510036), 4);
@@ -0,0 +1,317 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <response>
3
+ <info>
4
+ <statusCode>0</statusCode>
5
+ <messages/>
6
+ <copyright>
7
+ <imageUrl>http://api.mqcdn.com/res/mqlogo.gif</imageUrl>
8
+ <imageAltText>© 2013 MapQuest, Inc.</imageAltText>
9
+ <text>© 2013 MapQuest, Inc.</text>
10
+ </copyright>
11
+ </info>
12
+ <results>
13
+ <result>
14
+ <providedLocation>
15
+ <location>217 Union St., NY</location>
16
+ </providedLocation>
17
+ <locations>
18
+ <location>
19
+ <street>
20
+ </street>
21
+ <adminArea5 type="City">Stony Brook</adminArea5>
22
+ <adminArea3 type="State">NY</adminArea3>
23
+ <adminArea4 type="County">Suffolk County</adminArea4>
24
+ <postalCode>
25
+ </postalCode>
26
+ <adminArea1 type="Country">US</adminArea1>
27
+ <geocodeQuality>CITY</geocodeQuality>
28
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
29
+ <dragPoint>false</dragPoint>
30
+ <sideOfStreet>N</sideOfStreet>
31
+ <displayLatLng>
32
+ <latLng>
33
+ <lat>40.925598</lat>
34
+ <lng>-73.141403</lng>
35
+ </latLng>
36
+ </displayLatLng>
37
+ <linkId>0</linkId>
38
+ <type>s</type>
39
+ <latLng>
40
+ <lat>40.925598</lat>
41
+ <lng>-73.141403</lng>
42
+ </latLng>
43
+ <mapUrl>
44
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-1,40.925598,-73.141403,0,0|&center=40.925598,-73.141403&zoom=12&rand=-222523709]]>
45
+ </mapUrl>
46
+ </location>
47
+ <location>
48
+ <street>
49
+ </street>
50
+ <adminArea5 type="City">Stony Point</adminArea5>
51
+ <adminArea3 type="State">NY</adminArea3>
52
+ <adminArea4 type="County">Rockland County</adminArea4>
53
+ <postalCode>
54
+ </postalCode>
55
+ <adminArea1 type="Country">US</adminArea1>
56
+ <geocodeQuality>CITY</geocodeQuality>
57
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
58
+ <dragPoint>false</dragPoint>
59
+ <sideOfStreet>N</sideOfStreet>
60
+ <displayLatLng>
61
+ <latLng>
62
+ <lat>41.229401</lat>
63
+ <lng>-73.987503</lng>
64
+ </latLng>
65
+ </displayLatLng>
66
+ <linkId>0</linkId>
67
+ <type>s</type>
68
+ <latLng>
69
+ <lat>41.229401</lat>
70
+ <lng>-73.987503</lng>
71
+ </latLng>
72
+ <mapUrl>
73
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-2,41.229401,-73.987503,0,0|&center=41.229401,-73.987503&zoom=12&rand=-222523709]]>
74
+ </mapUrl>
75
+ </location>
76
+ <location>
77
+ <street>
78
+ </street>
79
+ <adminArea5 type="City">Staatsburg</adminArea5>
80
+ <adminArea3 type="State">NY</adminArea3>
81
+ <adminArea4 type="County">Dutchess County</adminArea4>
82
+ <postalCode>
83
+ </postalCode>
84
+ <adminArea1 type="Country">US</adminArea1>
85
+ <geocodeQuality>CITY</geocodeQuality>
86
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
87
+ <dragPoint>false</dragPoint>
88
+ <sideOfStreet>N</sideOfStreet>
89
+ <displayLatLng>
90
+ <latLng>
91
+ <lat>41.849701</lat>
92
+ <lng>-73.930603</lng>
93
+ </latLng>
94
+ </displayLatLng>
95
+ <linkId>0</linkId>
96
+ <type>s</type>
97
+ <latLng>
98
+ <lat>41.849701</lat>
99
+ <lng>-73.930603</lng>
100
+ </latLng>
101
+ <mapUrl>
102
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-3,41.849701,-73.930603,0,0|&center=41.849701,-73.930603&zoom=12&rand=-222523709]]>
103
+ </mapUrl>
104
+ </location>
105
+ <location>
106
+ <street>
107
+ </street>
108
+ <adminArea5 type="City">Stamford</adminArea5>
109
+ <adminArea3 type="State">NY</adminArea3>
110
+ <adminArea4 type="County">Delaware County</adminArea4>
111
+ <postalCode>
112
+ </postalCode>
113
+ <adminArea1 type="Country">US</adminArea1>
114
+ <geocodeQuality>CITY</geocodeQuality>
115
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
116
+ <dragPoint>false</dragPoint>
117
+ <sideOfStreet>N</sideOfStreet>
118
+ <displayLatLng>
119
+ <latLng>
120
+ <lat>42.4072</lat>
121
+ <lng>-74.6147</lng>
122
+ </latLng>
123
+ </displayLatLng>
124
+ <linkId>0</linkId>
125
+ <type>s</type>
126
+ <latLng>
127
+ <lat>42.4072</lat>
128
+ <lng>-74.6147</lng>
129
+ </latLng>
130
+ <mapUrl>
131
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-4,42.4072,-74.6147,0,0|&center=42.4072,-74.6147&zoom=12&rand=-222523709]]>
132
+ </mapUrl>
133
+ </location>
134
+ <location>
135
+ <street>
136
+ </street>
137
+ <adminArea5 type="City">Standish</adminArea5>
138
+ <adminArea3 type="State">NY</adminArea3>
139
+ <adminArea4 type="County">Clinton County</adminArea4>
140
+ <postalCode>
141
+ </postalCode>
142
+ <adminArea1 type="Country">US</adminArea1>
143
+ <geocodeQuality>CITY</geocodeQuality>
144
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
145
+ <dragPoint>false</dragPoint>
146
+ <sideOfStreet>N</sideOfStreet>
147
+ <displayLatLng>
148
+ <latLng>
149
+ <lat>44.689201</lat>
150
+ <lng>-73.949402</lng>
151
+ </latLng>
152
+ </displayLatLng>
153
+ <linkId>0</linkId>
154
+ <type>s</type>
155
+ <latLng>
156
+ <lat>44.689201</lat>
157
+ <lng>-73.949402</lng>
158
+ </latLng>
159
+ <mapUrl>
160
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-5,44.689201,-73.949402,0,0|&center=44.689201,-73.949402&zoom=12&rand=-222523709]]>
161
+ </mapUrl>
162
+ </location>
163
+ <location>
164
+ <street>
165
+ </street>
166
+ <adminArea5 type="City">Stanford Heights</adminArea5>
167
+ <adminArea3 type="State">NY</adminArea3>
168
+ <adminArea4 type="County">Albany County</adminArea4>
169
+ <postalCode>
170
+ </postalCode>
171
+ <adminArea1 type="Country">US</adminArea1>
172
+ <geocodeQuality>CITY</geocodeQuality>
173
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
174
+ <dragPoint>false</dragPoint>
175
+ <sideOfStreet>N</sideOfStreet>
176
+ <displayLatLng>
177
+ <latLng>
178
+ <lat>42.765598</lat>
179
+ <lng>-73.889397</lng>
180
+ </latLng>
181
+ </displayLatLng>
182
+ <linkId>0</linkId>
183
+ <type>s</type>
184
+ <latLng>
185
+ <lat>42.765598</lat>
186
+ <lng>-73.889397</lng>
187
+ </latLng>
188
+ <mapUrl>
189
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-6,42.765598,-73.889397,0,0|&center=42.765598,-73.889397&zoom=12&rand=-222908458]]>
190
+ </mapUrl>
191
+ </location>
192
+ <location>
193
+ <street>
194
+ </street>
195
+ <adminArea5 type="City">Stanfordville</adminArea5>
196
+ <adminArea3 type="State">NY</adminArea3>
197
+ <adminArea4 type="County">Dutchess County</adminArea4>
198
+ <postalCode>
199
+ </postalCode>
200
+ <adminArea1 type="Country">US</adminArea1>
201
+ <geocodeQuality>CITY</geocodeQuality>
202
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
203
+ <dragPoint>false</dragPoint>
204
+ <sideOfStreet>N</sideOfStreet>
205
+ <displayLatLng>
206
+ <latLng>
207
+ <lat>41.867199</lat>
208
+ <lng>-73.714699</lng>
209
+ </latLng>
210
+ </displayLatLng>
211
+ <linkId>0</linkId>
212
+ <type>s</type>
213
+ <latLng>
214
+ <lat>41.867199</lat>
215
+ <lng>-73.714699</lng>
216
+ </latLng>
217
+ <mapUrl>
218
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-7,41.867199,-73.714699,0,0|&center=41.867199,-73.714699&zoom=12&rand=-222908458]]>
219
+ </mapUrl>
220
+ </location>
221
+ <location>
222
+ <street>
223
+ </street>
224
+ <adminArea5 type="City">Stannards</adminArea5>
225
+ <adminArea3 type="State">NY</adminArea3>
226
+ <adminArea4 type="County">Allegany County</adminArea4>
227
+ <postalCode>
228
+ </postalCode>
229
+ <adminArea1 type="Country">US</adminArea1>
230
+ <geocodeQuality>CITY</geocodeQuality>
231
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
232
+ <dragPoint>false</dragPoint>
233
+ <sideOfStreet>N</sideOfStreet>
234
+ <displayLatLng>
235
+ <latLng>
236
+ <lat>42.086399</lat>
237
+ <lng>-77.922501</lng>
238
+ </latLng>
239
+ </displayLatLng>
240
+ <linkId>0</linkId>
241
+ <type>s</type>
242
+ <latLng>
243
+ <lat>42.086399</lat>
244
+ <lng>-77.922501</lng>
245
+ </latLng>
246
+ <mapUrl>
247
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-8,42.086399,-77.922501,0,0|&center=42.086399,-77.922501&zoom=12&rand=-222908458]]>
248
+ </mapUrl>
249
+ </location>
250
+ <location>
251
+ <street>
252
+ </street>
253
+ <adminArea5 type="City">Star Lake</adminArea5>
254
+ <adminArea3 type="State">NY</adminArea3>
255
+ <adminArea4 type="County">Saint Lawrence County</adminArea4>
256
+ <postalCode>
257
+ </postalCode>
258
+ <adminArea1 type="Country">US</adminArea1>
259
+ <geocodeQuality>CITY</geocodeQuality>
260
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
261
+ <dragPoint>false</dragPoint>
262
+ <sideOfStreet>N</sideOfStreet>
263
+ <displayLatLng>
264
+ <latLng>
265
+ <lat>44.159698</lat>
266
+ <lng>-75.031898</lng>
267
+ </latLng>
268
+ </displayLatLng>
269
+ <linkId>0</linkId>
270
+ <type>s</type>
271
+ <latLng>
272
+ <lat>44.159698</lat>
273
+ <lng>-75.031898</lng>
274
+ </latLng>
275
+ <mapUrl>
276
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-9,44.159698,-75.031898,0,0|&center=44.159698,-75.031898&zoom=12&rand=-222908458]]>
277
+ </mapUrl>
278
+ </location>
279
+ <location>
280
+ <street>
281
+ </street>
282
+ <adminArea5 type="City">Stephentown</adminArea5>
283
+ <adminArea3 type="State">NY</adminArea3>
284
+ <adminArea4 type="County">Rensselaer County</adminArea4>
285
+ <postalCode>
286
+ </postalCode>
287
+ <adminArea1 type="Country">US</adminArea1>
288
+ <geocodeQuality>CITY</geocodeQuality>
289
+ <geocodeQualityCode>A5XCX</geocodeQualityCode>
290
+ <dragPoint>false</dragPoint>
291
+ <sideOfStreet>N</sideOfStreet>
292
+ <displayLatLng>
293
+ <latLng>
294
+ <lat>42.548599</lat>
295
+ <lng>-73.374397</lng>
296
+ </latLng>
297
+ </displayLatLng>
298
+ <linkId>0</linkId>
299
+ <type>s</type>
300
+ <latLng>
301
+ <lat>42.548599</lat>
302
+ <lng>-73.374397</lng>
303
+ </latLng>
304
+ <mapUrl>
305
+ <![CDATA[http://www.mapquestapi.com/staticmap/v4/getmap?key=Fmjtd|luub2hutnu,7w=o5-9utnh0&type=map&size=225,160&pois=purple-10,42.548599,-73.374397,0,0|&center=42.548599,-73.374397&zoom=12&rand=-222908458]]>
306
+ </mapUrl>
307
+ </location>
308
+ </locations>
309
+ </result>
310
+ </results>
311
+ <options>
312
+ <maxResults>-1</maxResults>
313
+ <thumbMaps>true</thumbMaps>
314
+ <ignoreLatLngInput>false</ignoreLatLngInput>
315
+ <boundingBox/>
316
+ </options>
317
+ </response>