static-gmaps 0.0.1 → 0.0.2
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.
- data/History.txt +7 -1
- data/Manifest.txt +0 -1
- data/README.txt +7 -4
- data/Rakefile +1 -0
- data/lib/static_gmaps.rb +82 -3
- data/spec/static_gmaps_spec.rb +70 -29
- metadata +2 -3
- data/spec/test_image.gif +0 -0
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/README.txt
CHANGED
@@ -8,7 +8,7 @@ Provides an interface to the Google Static Maps API.
|
|
8
8
|
|
9
9
|
== FEATURES/PROBLEMS:
|
10
10
|
|
11
|
-
*
|
11
|
+
* Provides an interface to the Google Static Maps API.
|
12
12
|
|
13
13
|
== SYNOPSIS:
|
14
14
|
|
@@ -16,12 +16,15 @@ Provides an interface to the Google Static Maps API.
|
|
16
16
|
GOOGLE_MAPS_API_KEY = ''
|
17
17
|
|
18
18
|
map = StaticGmaps::Map.new :center => [ 40.714728, -73.998672 ],
|
19
|
-
:zoom =>
|
19
|
+
:zoom => 5,
|
20
20
|
:size => [ 500, 400 ],
|
21
21
|
:map_type => :roadmap,
|
22
22
|
:key => GOOGLE_MAPS_API_KEY
|
23
|
-
map.
|
24
|
-
|
23
|
+
map.markers << StaticGmaps::Marker.new(:latitude => 40,
|
24
|
+
:longitude => -73,
|
25
|
+
:color => :blue,
|
26
|
+
:alpha_character => :b)
|
27
|
+
map.url => 'http://maps.google.com/staticmap?center=40.714728,-73.998672&key=GOOGLE_MAPS_API_KEY&map_type=roadmap&markers=40,-73,blueb&size=500x400&zoom=5'
|
25
28
|
|
26
29
|
== REQUIREMENTS:
|
27
30
|
|
data/Rakefile
CHANGED
@@ -39,6 +39,7 @@ Hoe.new('static-gmaps', StaticGmaps::VERSION) do |p|
|
|
39
39
|
p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
|
40
40
|
p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
|
41
41
|
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
42
|
+
p.remote_rdoc_dir = ''
|
42
43
|
end
|
43
44
|
|
44
45
|
desc "Run all examples"
|
data/lib/static_gmaps.rb
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
require 'net/http'
|
24
24
|
|
25
25
|
module StaticGmaps
|
26
|
-
VERSION = '0.0.
|
26
|
+
VERSION = '0.0.2'
|
27
27
|
|
28
28
|
class Map
|
29
29
|
DEFAULT_CENTER = [ 0, 0 ]
|
@@ -31,12 +31,14 @@ module StaticGmaps
|
|
31
31
|
DEFAULT_SIZE = [ 500, 400 ]
|
32
32
|
DEFAULT_MAP_TYPE = :roadmap
|
33
33
|
DEFAULT_KEY = 'ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA'
|
34
|
+
DEFAULT_MARKERS = [ ]
|
34
35
|
|
35
36
|
attr_accessor :center,
|
36
37
|
:zoom,
|
37
38
|
:size,
|
38
39
|
:map_type,
|
39
|
-
:key
|
40
|
+
:key,
|
41
|
+
:markers
|
40
42
|
|
41
43
|
def initialize(options = {})
|
42
44
|
self.center = options[:center] || DEFAULT_CENTER
|
@@ -44,6 +46,7 @@ module StaticGmaps
|
|
44
46
|
self.size = options[:size] || DEFAULT_SIZE
|
45
47
|
self.map_type = options[:map_type] || DEFAULT_MAP_TYPE
|
46
48
|
self.key = options[:key] || DEFAULT_KEY
|
49
|
+
self.markers = options[:markers] || DEFAULT_MARKERS
|
47
50
|
end
|
48
51
|
|
49
52
|
def width
|
@@ -54,8 +57,33 @@ module StaticGmaps
|
|
54
57
|
size[1]
|
55
58
|
end
|
56
59
|
|
60
|
+
# http://code.google.com/apis/maps/documentation/staticmaps/index.html#URL_Parameters
|
57
61
|
def url
|
58
|
-
|
62
|
+
raise MissingArgument.new("Size must be set before a url can be generated for Map.") if !size || !size[0] || !size[1]
|
63
|
+
raise MissingArgument.new("Key must be set before a url can be generated for Map.") if !key
|
64
|
+
if !(markers && markers.size > 1)
|
65
|
+
raise MissingArgument.new("Center must be set before a url can be generated for Map (or multiple markers can be specified).") if !center
|
66
|
+
raise MissingArgument.new("Zoom must be set before a url can be generated for Map (or multiple markers can be specified).") if !zoom
|
67
|
+
end
|
68
|
+
parameters = {}
|
69
|
+
parameters[:size] = "#{size[0]}x#{size[1]}"
|
70
|
+
parameters[:key] = "#{key}"
|
71
|
+
parameters[:map_type] = "#{map_type}" if map_type
|
72
|
+
parameters[:center] = "#{center[0]},#{center[1]}" if center
|
73
|
+
parameters[:zoom] = "#{zoom}" if zoom
|
74
|
+
parameters[:markers] = "#{markers_url_fragment}" if markers_url_fragment
|
75
|
+
parameters = parameters.to_a.sort { |a, b| a[0].to_s <=> b[0].to_s }
|
76
|
+
parameters = parameters.collect { |parameter| "#{parameter[0]}=#{parameter[1]}" }
|
77
|
+
parameters = parameters.join '&'
|
78
|
+
return "http://maps.google.com/staticmap?#{parameters}"
|
79
|
+
end
|
80
|
+
|
81
|
+
def markers_url_fragment
|
82
|
+
if markers && markers.any?
|
83
|
+
return markers.collect{|marker| marker.url_fragment }.join('|')
|
84
|
+
else
|
85
|
+
return nil
|
86
|
+
end
|
59
87
|
end
|
60
88
|
|
61
89
|
def to_blob
|
@@ -74,4 +102,55 @@ module StaticGmaps
|
|
74
102
|
end
|
75
103
|
end
|
76
104
|
end
|
105
|
+
|
106
|
+
# http://code.google.com/apis/maps/documentation/staticmaps/index.html#Markers
|
107
|
+
class Marker
|
108
|
+
DEFAULT_LATITUDE = nil
|
109
|
+
DEFAULT_LONGITUDE = nil
|
110
|
+
DEFAULT_COLOR = nil
|
111
|
+
DEFAULT_ALPHA_CHARACTER = nil
|
112
|
+
VALID_COLORS = [ :red, :green, :blue ]
|
113
|
+
VALID_ALPHA_CHARACTERS = [ :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z ]
|
114
|
+
|
115
|
+
attr_accessor :latitude,
|
116
|
+
:longitude,
|
117
|
+
:color,
|
118
|
+
:alpha_character
|
119
|
+
|
120
|
+
def initialize(options = {})
|
121
|
+
self.latitude = options[:latitude] || DEFAULT_LATITUDE
|
122
|
+
self.longitude = options[:longitude] || DEFAULT_LONGITUDE
|
123
|
+
self.color = options[:color] || DEFAULT_COLOR
|
124
|
+
self.alpha_character = options[:alpha_character] || DEFAULT_ALPHA_CHARACTER
|
125
|
+
end
|
126
|
+
|
127
|
+
def color=(value)
|
128
|
+
if value
|
129
|
+
value = value.to_s.downcase.to_sym
|
130
|
+
if !VALID_COLORS.include?(value)
|
131
|
+
raise ArgumentError.new("#{value} is not a supported color. Supported colors are #{VALID_COLORS.join(', ')}.")
|
132
|
+
end
|
133
|
+
end
|
134
|
+
@color = value
|
135
|
+
end
|
136
|
+
|
137
|
+
def alpha_character=(value)
|
138
|
+
if value
|
139
|
+
value = value.to_s.downcase.to_sym
|
140
|
+
if !VALID_ALPHA_CHARACTERS.include?(value)
|
141
|
+
raise ArgumentError.new("#{value} is not a supported alpha_character. Supported colors are #{VALID_ALPHA_CHARACTERS.join(', ')}.")
|
142
|
+
end
|
143
|
+
end
|
144
|
+
@alpha_character = value
|
145
|
+
end
|
146
|
+
|
147
|
+
def url_fragment
|
148
|
+
raise MissingArgument.new("Latitude must be set before a url_fragment can be generated for Marker.") if !latitude
|
149
|
+
raise MissingArgument.new("Longitude must be set before a url_fragment can be generated for Marker.") if !longitude
|
150
|
+
x = "#{latitude},#{longitude}"
|
151
|
+
x += ",#{color}" if color
|
152
|
+
x += "#{alpha_character}" if alpha_character
|
153
|
+
return x
|
154
|
+
end
|
155
|
+
end
|
77
156
|
end
|
data/spec/static_gmaps_spec.rb
CHANGED
@@ -1,40 +1,81 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'spec'
|
3
3
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'static_gmaps')
|
4
|
+
include StaticGmaps
|
4
5
|
|
5
6
|
STATIC_GOOGLE_MAP_DEFAULT_PARAMETERS_TEST_IMAGE_PATH = File.join File.dirname(__FILE__), 'test_image.gif'
|
6
7
|
|
7
|
-
describe StaticGmaps
|
8
|
-
|
8
|
+
describe StaticGmaps do
|
9
|
+
describe Map, 'initialize with no attributes' do
|
10
|
+
before(:each) do @map = StaticGmaps::Map.new end
|
11
|
+
|
12
|
+
it 'should set center to default' do @map.center.should == StaticGmaps::Map::DEFAULT_CENTER end
|
13
|
+
it 'should set zoom to default' do @map.zoom.should == StaticGmaps::Map::DEFAULT_ZOOM end
|
14
|
+
it 'should set size to default' do @map.size.should == StaticGmaps::Map::DEFAULT_SIZE end
|
15
|
+
it 'should set map_type to default' do @map.map_type.should == StaticGmaps::Map::DEFAULT_MAP_TYPE end
|
16
|
+
it 'should set key to default' do @map.key.should == StaticGmaps::Map::DEFAULT_KEY end
|
17
|
+
it 'should set its markers default' do @map.markers.should == StaticGmaps::Map::DEFAULT_MARKERS end
|
18
|
+
end
|
9
19
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
describe Map, 'initialize with all attributes' do
|
21
|
+
before(:each) do
|
22
|
+
@marker = StaticGmaps::Marker.new :latitude => 0, :longitude => 0
|
23
|
+
@map = StaticGmaps::Map.new :center => [ 40.714728, -73.998672 ],
|
24
|
+
:zoom => 12,
|
25
|
+
:size => [ 500, 400 ],
|
26
|
+
:map_type => :roadmap,
|
27
|
+
:key => 'ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA',
|
28
|
+
:markers => [ @marker ]
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should set center' do @map.center.should == [ 40.714728, -73.998672 ] end
|
32
|
+
it 'should set zoom' do @map.zoom.should == 12 end
|
33
|
+
it 'should set size' do @map.size.should == [ 500, 400 ] end
|
34
|
+
it 'should set map_type' do @map.map_type.should == :roadmap end
|
35
|
+
it 'should set key' do @map.key.should == 'ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA' end
|
36
|
+
it 'should set markers' do @map.markers.should == [ @marker ] end
|
24
37
|
end
|
25
38
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
before(:each) do @static_google_map = StaticGmaps::Map.new end
|
39
|
+
describe Map, 'with default attributes' do
|
40
|
+
before(:each) do @map = StaticGmaps::Map.new end
|
41
|
+
|
42
|
+
it 'should have a url' do @map.url.should == 'http://maps.google.com/staticmap?center=0,0&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&map_type=roadmap&size=500x400&zoom=1' end
|
43
|
+
it 'should have a width' do @map.width.should == 500 end
|
44
|
+
it 'should have a height' do @map.height.should == 400 end
|
45
|
+
#it 'should respond to to_blob with an image' do @map.to_blob.should == File.read(STATIC_GOOGLE_MAP_DEFAULT_PARAMETERS_TEST_IMAGE_PATH) end
|
46
|
+
end
|
35
47
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
48
|
+
describe Map, 'with default attributes and markers' do
|
49
|
+
before(:each) do
|
50
|
+
@marker_1 = StaticGmaps::Marker.new :latitude => 10, :longitude => 20, :color => 'green', :alpha_character => 'A'
|
51
|
+
@marker_2 = StaticGmaps::Marker.new :latitude => 15, :longitude => 25, :color => 'blue', :alpha_character => 'B'
|
52
|
+
@map = StaticGmaps::Map.new :markers => [ @marker_1, @marker_2 ]
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should have a markers_url_fragment' do @map.markers_url_fragment.should == '10,20,greena|15,25,blueb' end
|
56
|
+
it 'should include the markers_url_fragment its url' do @map.url.should include(@map.markers_url_fragment) end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe Marker, 'initialize with no attributes' do
|
60
|
+
before(:each) do @marker = StaticGmaps::Marker.new end
|
61
|
+
|
62
|
+
it 'should set latitude to default' do @marker.latitude.should == StaticGmaps::Marker::DEFAULT_LATITUDE end
|
63
|
+
it 'should set longitude to default' do @marker.longitude.should == StaticGmaps::Marker::DEFAULT_LONGITUDE end
|
64
|
+
it 'should set color to default' do @marker.color.should == StaticGmaps::Marker::DEFAULT_COLOR end
|
65
|
+
it 'should set alpha_character to default' do @marker.alpha_character.should == StaticGmaps::Marker::DEFAULT_ALPHA_CHARACTER end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe Marker, 'initialize with all attributes' do
|
69
|
+
before(:each) do
|
70
|
+
@marker = StaticGmaps::Marker.new :latitude => 12,
|
71
|
+
:longitude => 34,
|
72
|
+
:color => 'red',
|
73
|
+
:alpha_character => 'z'
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should set latitude' do @marker.latitude.should == 12 end
|
77
|
+
it 'should set longitude' do @marker.longitude.should == 34 end
|
78
|
+
it 'should set color' do @marker.color.should == :red end
|
79
|
+
it 'should set alpha_character' do @marker.alpha_character.should == :z end
|
80
|
+
end
|
40
81
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: static-gmaps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Wulff
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.5.0
|
23
23
|
version:
|
24
|
-
description: "== DESCRIPTION: Provides an interface to the Google Static Maps API. == FEATURES/PROBLEMS: *
|
24
|
+
description: "== DESCRIPTION: Provides an interface to the Google Static Maps API. == FEATURES/PROBLEMS: * Provides an interface to the Google Static Maps API."
|
25
25
|
email: johnwulff@gmail.com
|
26
26
|
executables: []
|
27
27
|
|
@@ -40,7 +40,6 @@ files:
|
|
40
40
|
- Rakefile
|
41
41
|
- lib/static_gmaps.rb
|
42
42
|
- spec/static_gmaps_spec.rb
|
43
|
-
- spec/test_image.gif
|
44
43
|
has_rdoc: true
|
45
44
|
homepage:
|
46
45
|
post_install_message:
|
data/spec/test_image.gif
DELETED
Binary file
|