google_static_maps_helper 1.3.0 → 1.3.1

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.
@@ -30,6 +30,15 @@ If you are on Rails you can put it in your environment configuration file and wh
30
30
  ...
31
31
  end
32
32
 
33
+ It is also possible to create paths:
34
+ point1 = {:lng => 1, :lat => 2}
35
+ point2 = {:lng => 3, :lat => 4}
36
+
37
+ GoogleStaticMapsHelper.url_for do
38
+ path point1, point2, :color => :red, :weight => 7
39
+ end
40
+
41
+ ..and of course you can add paths and markers in the same map.
33
42
 
34
43
  = A bit more "low-level" approach instantiating objects yourself
35
44
 
@@ -100,6 +109,10 @@ color is what will trigger the creation of polygons for the static map API.
100
109
  map << path
101
110
  map.url
102
111
 
112
+ If you feel like it, you can add points at construction time:
113
+ GoogleStaticMapsHelper::Path.new(:color => :red, :points => [point1, point2])
114
+ # ..or
115
+ GoogleStaticMapsHelper::Path.new(point1, point2, :color => :red)
103
116
 
104
117
  == TODO
105
118
  * Ruby 1.9 support
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.0
1
+ 1.3.1
@@ -1,3 +1,8 @@
1
+ = v.1.3.1
2
+ * Wrote better docs for all classes.
3
+ * You can add points to Paths with Path.new(point, second_point, :color => :red, :fillcolor => :blue)
4
+ * The "DSL" supports adding paths to the map.
5
+
1
6
  = v.1.3.0
2
7
  * It is now possible to create Paths which is used to represent lines and polygons in the map. This is not included in the little DSL we have though.
3
8
  * The map may now request a URL for a specified image format. As an exampe, set map.format = :jpg to get smaller images (but also less quality).
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{google_static_maps_helper}
8
- s.version = "1.2.3"
8
+ s.version = "1.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Thorbj\303\270rn Hermansen"]
12
- s.date = %q{2009-10-25}
12
+ s.date = %q{2009-10-28}
13
13
  s.description = %q{This gem provides a simple interface to the Google Static Maps V2 API.}
14
14
  s.email = %q{thhermansen@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -26,11 +26,15 @@ Gem::Specification.new do |s|
26
26
  "changelog.txt",
27
27
  "google_static_maps_helper.gemspec",
28
28
  "lib/google_static_maps_helper.rb",
29
+ "lib/google_static_maps_helper/location.rb",
29
30
  "lib/google_static_maps_helper/map.rb",
30
31
  "lib/google_static_maps_helper/marker.rb",
32
+ "lib/google_static_maps_helper/path.rb",
31
33
  "spec/google_static_maps_helper_spec.rb",
34
+ "spec/location_spec.rb",
32
35
  "spec/map_spec.rb",
33
36
  "spec/marker_spec.rb",
37
+ "spec/path_spec.rb",
34
38
  "spec/spec_helper.rb"
35
39
  ]
36
40
  s.homepage = %q{http://github.com/thhermansen/google_static_maps_helper}
@@ -42,7 +46,9 @@ Gem::Specification.new do |s|
42
46
  "spec/spec_helper.rb",
43
47
  "spec/marker_spec.rb",
44
48
  "spec/google_static_maps_helper_spec.rb",
45
- "spec/map_spec.rb"
49
+ "spec/location_spec.rb",
50
+ "spec/map_spec.rb",
51
+ "spec/path_spec.rb"
46
52
  ]
47
53
 
48
54
  if s.respond_to? :specification_version then
@@ -58,3 +64,4 @@ Gem::Specification.new do |s|
58
64
  s.add_dependency(%q<rspec>, [">= 0"])
59
65
  end
60
66
  end
67
+
@@ -4,7 +4,21 @@ require File.dirname(__FILE__) + '/google_static_maps_helper/location'
4
4
  require File.dirname(__FILE__) + '/google_static_maps_helper/marker'
5
5
  require File.dirname(__FILE__) + '/google_static_maps_helper/path'
6
6
 
7
+ #
8
+ # The Google Static Map Helper provides a simple interface to the
9
+ # Google Static Maps V2 API (http://code.google.com/apis/maps/documentation/staticmaps/).
10
+ #
11
+ # The module is build up of classes maping more or less directly to the entities you'd except:
12
+ # <tt>Map</tt>:: A map is what keeps all of the state of which you'll build a URL for.
13
+ # <tt>Marker</tt>:: One or more markers can be added to the map. A marker can be customized with size, label and color.
14
+ # <tt>Path</tt>:: A path will create lines or polygons in your map.
15
+ #
16
+ # == About
17
+ #
18
+ # Author:: Thorbjørn Hermansen (thhermansen@gmail.com)
19
+ #
7
20
  module GoogleStaticMapsHelper
21
+ # The basic url to the API which we'll build the URL from
8
22
  API_URL = 'http://maps.google.com/maps/api/staticmap'
9
23
 
10
24
  class OptionMissing < ArgumentError; end # Raised when required options is not sent in during construction
@@ -15,7 +29,35 @@ module GoogleStaticMapsHelper
15
29
 
16
30
  class << self
17
31
  attr_accessor :key, :size, :sensor
18
-
32
+
33
+ #
34
+ # Provides a simple DSL stripping away the need of manually instantiating classes
35
+ #
36
+ # *NOTE* Paths are not supported by the DSL yet.
37
+ #
38
+ # Usage:
39
+ #
40
+ # # First of all, you might want to set your key etc
41
+ # GoogleStaticMapsHelper.key = 'your google key'
42
+ # GoogleStaticMapsHelper.size = '300x600'
43
+ # GoogleStaticMapsHelper.sensor = false
44
+ #
45
+ # # Then, you'll be able to do:
46
+ # url = GoogleStaticMapsHelper.url_for do
47
+ # marker :lng => 1, :lat => 2
48
+ # marker :lng => 3, :lat => 4
49
+ # end
50
+ #
51
+ # # You can send in key, size etc to url_for
52
+ # url = GoogleStaticMapsHelper.url_for(:key => 'your_key', :size => [300, 600]) do
53
+ # # ...
54
+ # end
55
+ #
56
+ # # If you need to, the map object is yielded to the block, so you can do:
57
+ # url = GoogleStaticMapsHelper.url_for do |map|
58
+ # map.marker object_which_responds_to_lng_lat
59
+ # end
60
+ #
19
61
  def url_for(map_options = {}, &block)
20
62
  map = Map.new(map_options)
21
63
  block.arity < 1 ? map.instance_eval(&block) : block.call(map)
@@ -1,17 +1,26 @@
1
1
  module GoogleStaticMapsHelper
2
-
3
- # Represents a location (latitude and longitude)
4
2
  #
5
- # This class will also hold logic like travel_to(heading, distance) which will make
6
- # drawing paths and polygons easier.
3
+ # Represents a location with lat and lng values.
4
+ #
5
+ # This classed is used internally to back up Markers' location
6
+ # and Paths' points.
7
+ #
7
8
  class Location
8
- class NoLngMethod < NoMethodError; end
9
- class NoLatMethod < NoMethodError; end
10
- class NoLatKey < ArgumentError; end
11
- class NoLngKey < ArgumentError; end
9
+ class NoLngMethod < NoMethodError; end # Raised if incomming object doesnt respond to lng
10
+ class NoLatMethod < NoMethodError; end # Raised if incomming object doesnt respond to lat
11
+ class NoLatKey < ArgumentError; end # Raised if incomming Hash doesnt have key lat
12
+ class NoLngKey < ArgumentError; end # Raised if incomming Hash doesnt have key lng
12
13
 
13
14
  attr_accessor :lat, :lng
14
15
 
16
+ # :call-seq:
17
+ # new(location_object_or_options, *args)
18
+ #
19
+ # Creates a new Location which is used by Marker and Path object
20
+ # to represent it's locations.
21
+ #
22
+ # <tt>:args</tt>: Either a location which responds to lat or lng, or a Hash which has :lat and :lng keys.
23
+ #
15
24
  def initialize(*args)
16
25
  raise ArgumentError, "Must have some arguments." if args.length == 0
17
26
 
@@ -22,7 +31,10 @@ module GoogleStaticMapsHelper
22
31
  end
23
32
  end
24
33
 
25
- def to_url
34
+ #
35
+ # Returning the location as a string "lat,lng"
36
+ #
37
+ def to_url # :nodoc:
26
38
  [lat, lng].join(',')
27
39
  end
28
40
 
@@ -1,10 +1,12 @@
1
1
  module GoogleStaticMapsHelper
2
- # Represents the map we are generating
3
- # It holds markers and paths and iterates over them to build the URL
4
- # to be used in an image tag.
2
+ #
3
+ # The Map keeps track of the state of which we want to build a URL for.
4
+ # It will hold Markers and Paths, and other states like dimensions of the map,
5
+ # image format, language etc.
6
+ #
5
7
  class Map
6
8
  include Enumerable
7
-
9
+
8
10
  MAX_WIDTH = 640
9
11
  MAX_HEIGHT = 640
10
12
 
@@ -12,15 +14,27 @@ module GoogleStaticMapsHelper
12
14
  VALID_MAP_TYPES = %w{roadmap satellite terrain hybrid}
13
15
 
14
16
  REQUIRED_OPTIONS = [:key, :size, :sensor]
15
- OPTIONAL_OPTIONS = [:center, :zoom, :format, :maptype, :mobile, :language, :format, :maptype]
17
+ OPTIONAL_OPTIONS = [:center, :zoom, :format, :maptype, :mobile, :language]
16
18
 
17
19
  attr_accessor *(REQUIRED_OPTIONS + OPTIONAL_OPTIONS)
18
20
  attr_accessor :width, :height
19
21
 
20
- # Initialize a new Map object
21
22
  #
22
- # Takes a hash of options where :key, :size and :sensor are required.
23
- # Other options are center, zoom, format, maptype, mobile and language
23
+ # Creates a new Map object
24
+ #
25
+ # <tt>:options</tt>:: The options available are the same as described in
26
+ # Google's API documentation[http://code.google.com/apis/maps/documentation/staticmaps/#Usage].
27
+ # In short, valid options are:
28
+ # <tt>:key</tt>:: Your Google maps API key
29
+ # <tt>:size</tt>:: The size of the map. Can be a "wxh", [w,h] or {:width => x, :height => y}
30
+ # <tt>:sensor</tt>:: Set to true if your application is using a sensor. See the API doc.
31
+ # <tt>:center</tt>:: The center point of your map. Optional if you add markers or path to the map
32
+ # <tt>:zoom</tt>:: The zoom level you want, also optional as center
33
+ # <tt>:format</tt>:: Defaults to png
34
+ # <tt>:maptype</tt>:: Defaults to roadmap
35
+ # <tt>:mobile</tt>:: Returns map tiles better suited for mobile devices with small screens.
36
+ # <tt>:language</tt>:: The language used in the map
37
+ #
24
38
  def initialize(options)
25
39
  inject_defaults_from_module_class_attribute!(options)
26
40
  validate_required_options(options)
@@ -30,6 +44,9 @@ module GoogleStaticMapsHelper
30
44
  @map_enteties = []
31
45
  end
32
46
 
47
+ #
48
+ # Builds up a URL representing the state of this Map object
49
+ #
33
50
  def url
34
51
  raise BuildDataMissing, "We have to have markers, paths or center and zoom set when url is called!" unless can_build?
35
52
 
@@ -56,10 +73,19 @@ module GoogleStaticMapsHelper
56
73
  out
57
74
  end
58
75
 
76
+ #
77
+ # Returns all the markers which this map holds
78
+ #
59
79
  def markers
60
80
  @map_enteties.select {|e| e.is_a? Marker}
61
81
  end
62
82
 
83
+ #
84
+ # Returns the markers grouped by it's label, color and size.
85
+ #
86
+ # This is handy when building the URL because the API wants us to
87
+ # group together equal markers and just list the position of the markers thereafter in the URL.
88
+ #
63
89
  def grouped_markers
64
90
  markers.inject(Hash.new {|hash, key| hash[key] = []}) do |groups, marker|
65
91
  groups[marker.options_to_url_params] << marker
@@ -67,10 +93,16 @@ module GoogleStaticMapsHelper
67
93
  end
68
94
  end
69
95
 
96
+ #
97
+ # Returns all the paths which this map holds
98
+ #
70
99
  def paths
71
100
  @map_enteties.select {|e| e.is_a? Path}
72
101
  end
73
102
 
103
+ #
104
+ # Pushes either a Marker or a Path on to the map
105
+ #
74
106
  def <<(entity)
75
107
  @map_enteties << entity
76
108
  @map_enteties.uniq!
@@ -89,11 +121,26 @@ module GoogleStaticMapsHelper
89
121
  @map_enteties.length
90
122
  end
91
123
 
92
- def marker(*args)
93
- marker = Marker.new(*args)
94
- self << marker
124
+ #
125
+ # Used internally to make the DSL work. Might be changed at any time
126
+ # to make a better implementation.
127
+ #
128
+ def marker(*args) # :nodoc:
129
+ self << Marker.new(*args)
130
+ end
131
+
132
+ #
133
+ # Used internally to make the DSL work. Might be changed at any time
134
+ #
135
+ def path(*args) # :nodoc:
136
+ self << Path.new(*args)
95
137
  end
96
138
 
139
+ #
140
+ # Sets the size of the map
141
+ #
142
+ # <tt>size</tt>:: Can be a "wxh", [w,h] or {:width => x, :height => y}
143
+ #
97
144
  def size=(size)
98
145
  unless size.nil?
99
146
  case size
@@ -112,11 +159,19 @@ module GoogleStaticMapsHelper
112
159
  self.height = height if height
113
160
  end
114
161
  end
115
-
162
+
163
+ #
164
+ # Returns size as a string, "wxh"
165
+ #
116
166
  def size
117
167
  [@width, @height].join('x')
118
168
  end
119
-
169
+
170
+ #
171
+ # Defines width and height setter methods
172
+ #
173
+ # These methods enforces the MAX dimensions of the map
174
+ #
120
175
  [:width, :height].each do |name|
121
176
  define_method "#{name}=" do |dimension|
122
177
  dimension = dimension.to_i
@@ -126,11 +181,22 @@ module GoogleStaticMapsHelper
126
181
  end
127
182
  end
128
183
 
184
+
185
+ #
186
+ # Sets the format of the map
187
+ #
188
+ # <tt>format</tt>:: Can be any values included in VALID_FORMATS.
189
+ #
129
190
  def format=(format)
130
191
  @format = format.to_s
131
192
  raise UnsupportedFormat unless VALID_FORMATS.include? @format
132
193
  end
133
194
 
195
+ #
196
+ # Sets the map type of the map
197
+ #
198
+ # <tt>type</tt>:: Can be any values included in VALID_MAP_TYPES.
199
+ #
134
200
  def maptype=(type)
135
201
  @maptype = type.to_s
136
202
  raise UnsupportedMaptype unless VALID_MAP_TYPES.include? @maptype
@@ -138,6 +204,9 @@ module GoogleStaticMapsHelper
138
204
 
139
205
 
140
206
  private
207
+ #
208
+ # Returns an answer for if we can build the URL or not
209
+ #
141
210
  def can_build?
142
211
  !@map_enteties.empty? || (center && zoom)
143
212
  end
@@ -1,9 +1,8 @@
1
1
  module GoogleStaticMapsHelper
2
- # Simple wrapper around an object which should respond to lat and lng.
3
- # The wrapper keeps track of additional parameters for the Google map
4
- # to be used, like size color and label.
2
+ #
3
+ # A marker object is representing a marker with a customizable label, color and size.
4
+ #
5
5
  class Marker
6
- # These options are the one we build our parameters from
7
6
  DEFAULT_OPTIONS = {
8
7
  :color => 'red',
9
8
  :size => 'mid',
@@ -12,33 +11,41 @@ module GoogleStaticMapsHelper
12
11
 
13
12
  attr_accessor :location, *DEFAULT_OPTIONS.keys
14
13
 
15
- # Initialize a new Marker
16
- #
17
- # Can wither take an object which responds to lng and lat
18
- # GoogleStaticMapsHelper::Marker.new(location)
14
+ # :call-seq:
15
+ # new(location_object_or_options, *args)
16
+ #
17
+ # Creates a new Marker object. A marker object will, when added to a Map, represent
18
+ # one marker which you can customize with color, size and label.
19
+ #
20
+ # <tt>:location_object_or_options</tt>:: Either an object which responds to lat and lng or simply a option hash
21
+ # <tt>:args</tt>:: A hash of options. Can have keys like <tt>:color</tt>,
22
+ # <tt>:size</tt>, and <tt>:label</tt>.
23
+ # See Google's API documentation[http://code.google.com/apis/maps/documentation/staticmaps/#MarkerStyles] for more information.
24
+ # If a location object hasn't been given you must also include <tt>:lat</tt>
25
+ # and <tt>:lng</tt> values.
26
+ #
19
27
  #
20
- # Or it can take a has which includes lng and lat
21
- # GoogleStaticMapsHelper::Marker.new(:lng => 1, :lat => 2)
28
+ # Usage:
29
+ #
30
+ # # Sets location via object which responds to lng and lat
31
+ # GoogleStaticMapsHelper::Marker.new(location {:label => :a})
32
+ #
33
+ # # ..or include the lng and lat in the option hash
34
+ # GoogleStaticMapsHelper::Marker.new(:lng => 1, :lat => 2, :label => :a)
22
35
  #
23
- # You can also send in options like color, size and label in the hash,
24
- # or as a secnond parameter if the first was an object.
25
36
  def initialize(*args)
26
37
  raise ArgumentError, "Must have one or two arguments." if args.length == 0
27
-
28
- if args.first.is_a? Hash
29
- extract_location_from_hash!(args.first)
30
- else
31
- extract_location_from_object(args.shift)
32
- end
33
-
38
+ extract_location!(args)
34
39
  options = DEFAULT_OPTIONS.merge(args.shift || {})
35
40
  validate_options(options)
36
41
  options.each_pair { |k, v| send("#{k}=", v) }
37
42
  end
38
43
 
39
- # Returns a string wich is what Google Static map is using to
40
- # set the style on the marker. This ill include color, size and label
41
- def options_to_url_params
44
+ #
45
+ # Returns a string representing this marker
46
+ # Used by the Map when building url.
47
+ #
48
+ def options_to_url_params # :nodoc:
42
49
  params = DEFAULT_OPTIONS.keys.map(&:to_s).sort.inject([]) do |params, attr|
43
50
  value = send(attr)
44
51
  params << "#{attr}:#{URI.escape(value)}" unless value.nil?
@@ -48,35 +55,35 @@ module GoogleStaticMapsHelper
48
55
  params.join('|')
49
56
  end
50
57
 
51
- # Concatination of lat and lng value, used when building the url
52
- def location_to_url
58
+ #
59
+ # Concatenation of lat and lng value. Used when building URLs and returns them in correct order
60
+ #
61
+ def location_to_url # :nodoc:
53
62
  @location.to_url
54
63
  end
55
64
 
56
- def label
65
+ def label # :nodoc:
57
66
  @label.to_s.upcase if @label
58
67
  end
59
68
 
60
- def color
69
+ def color # :nodoc:
61
70
  @color.downcase if @color
62
71
  end
63
72
 
64
73
 
74
+ #
75
+ # Proxies calls to the internal object which keeps track of this marker's location.
76
+ # So, if @location responds to method missing in this object, it will respond to it.
77
+ #
65
78
  def method_missing(method, *args)
66
79
  return @location.send(method, *args) if @location.respond_to? method
67
80
  super
68
81
  end
69
82
 
70
83
  private
71
- def extract_location_from_hash!(location_hash)
72
- to_object = {}
73
- to_object[:lat] = location_hash.delete :lat if location_hash.has_key? :lat
74
- to_object[:lng] = location_hash.delete :lng if location_hash.has_key? :lng
75
- @location = Location.new(to_object)
76
- end
77
-
78
- def extract_location_from_object(location)
79
- @location = Location.new(location)
84
+ def extract_location!(args)
85
+ @location = Location.new(*args)
86
+ args.shift unless args.first.is_a? Hash
80
87
  end
81
88
 
82
89
  def validate_options(options)
@@ -1,4 +1,8 @@
1
1
  module GoogleStaticMapsHelper
2
+ #
3
+ # A Path is used to draw things in the map, either lines or Polygons.
4
+ # It is build up of points and if a fill color is set you'll get a Polygon.
5
+ #
2
6
  class Path
3
7
  include Enumerable
4
8
 
@@ -6,13 +10,33 @@ module GoogleStaticMapsHelper
6
10
 
7
11
  attr_accessor :points, *OPTIONAL_OPTIONS
8
12
 
9
- def initialize(options = {})
13
+ #
14
+ # Creates a new Path which you can push points on to to make up lines or polygons
15
+ #
16
+ # The following options are available, for more information see the
17
+ # Google API documentation[http://code.google.com/apis/maps/documentation/staticmaps/#Paths].
18
+ #
19
+ # <tt>:weight</tt>:: The weight is the thickness of the line, defaults to 5
20
+ # <tt>:color</tt>:: The color of the border can either be a textual representation like red, green, blue, black etc
21
+ # or as a 24-bit (0xAABBCC) or 32-bit hex value (0xAABBCCDD). When 32-bit values are
22
+ # given the two last bits will represent the alpha transparency value.
23
+ # <tt>:fillcolor</tt>:: With the fill color set you'll get a polygon in the map. The color value can be the same
24
+ # as described in the <tt>:color</tt>. When used, the static map will automatically create
25
+ # a closed shape.
26
+ # <tt>:points</tt>:: An array of points. You can mix objects responding to lng and lat, and a Hash with lng and lat keys.
27
+ #
28
+ def initialize(*args)
10
29
  @points = []
11
- options.each_pair {|k, v| send("#{k}=", v)}
30
+
31
+ extract_options!(args)
32
+ add_points(args)
12
33
  end
13
34
 
14
-
15
- def url_params
35
+ #
36
+ # Returns a string representation of this Path
37
+ # Used by the Map when building the URL
38
+ #
39
+ def url_params # :nodoc:
16
40
  raise BuildDataMissing, "Need at least 2 points to create a path!" unless can_build?
17
41
  out = 'path='
18
42
 
@@ -30,6 +54,11 @@ module GoogleStaticMapsHelper
30
54
  end
31
55
 
32
56
 
57
+ #
58
+ # Sets the points of this Path.
59
+ #
60
+ # *WARNING* Using this method will clear out any points which might be set.
61
+ #
33
62
  def points=(array)
34
63
  raise ArgumentError unless array.is_a? Array
35
64
  @points = []
@@ -48,20 +77,44 @@ module GoogleStaticMapsHelper
48
77
  length == 0
49
78
  end
50
79
 
80
+ #
81
+ # Pushes a new point into the Path
82
+ #
83
+ # A point might be a Hash which has lng and lat as keys, or an object responding to
84
+ # lng and lat. Any points pushed in will be converted internally to a Location
85
+ # object.
86
+ #
51
87
  def <<(point)
52
88
  @points << ensure_point_is_location_object(point)
53
89
  @points.uniq!
54
90
  self
55
91
  end
56
92
 
93
+
57
94
  private
95
+ #
96
+ # Extracts the lng and lat values from incomming point and creates a new Location
97
+ # object from it.
98
+ #
58
99
  def ensure_point_is_location_object(point)
59
100
  return point if point.instance_of? Location
60
101
  Location.new(point)
61
102
  end
62
-
103
+
104
+ #
105
+ # Do we have enough points to build a path?
106
+ #
63
107
  def can_build?
64
108
  length > 1
65
109
  end
110
+
111
+ def extract_options!(args)
112
+ options = args.last.is_a?(Hash) ? args.pop : {}
113
+ options.each_pair {|k, v| send("#{k}=", v)}
114
+ end
115
+
116
+ def add_points(points)
117
+ points.each {|point| self << point}
118
+ end
66
119
  end
67
120
  end
@@ -29,6 +29,17 @@ describe GoogleStaticMapsHelper do
29
29
  out.should include('size=600x400')
30
30
  end
31
31
 
32
+ it "should be able to add paths" do
33
+ point = {:lat => 1, :lng => 2}
34
+ point2 = {:lat => 3, :lng => 4}
35
+
36
+ out = GoogleStaticMapsHelper.url_for do
37
+ path point, point2, :color => :red
38
+ end
39
+
40
+ out.should include('path=color:red|1,2|3,4')
41
+ end
42
+
32
43
  it "should be possible to use inside a class, using attributes of that class" do
33
44
  class TestingClass
34
45
  attr_reader :location
@@ -19,6 +19,23 @@ describe GoogleStaticMapsHelper::Path do
19
19
  path.send(attribute).should == @@options.fetch(attribute)
20
20
  end
21
21
  end
22
+
23
+ describe "points" do
24
+ before do
25
+ @point = GoogleStaticMapsHelper::Location.new(:lat => 1, :lng => 2)
26
+ @point2 = GoogleStaticMapsHelper::Location.new(:lat => 1, :lng => 2)
27
+ end
28
+
29
+ it "should be able to add points via options during initialization" do
30
+ path = GoogleStaticMapsHelper::Path.new(@@options.merge(:points => [@point, @point2]))
31
+ path.points.should == [@point, @point2]
32
+ end
33
+
34
+ it "should be able to add points before option hash" do
35
+ path = GoogleStaticMapsHelper::Path.new(@point, @point2, @@options)
36
+ path.points.should == [@point, @point2]
37
+ end
38
+ end
22
39
  end
23
40
 
24
41
  describe "points" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_static_maps_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Thorbj\xC3\xB8rn Hermansen"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-28 00:00:00 +01:00
12
+ date: 2009-10-31 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency