google_static_maps_helper 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,37 @@
2
2
 
3
3
  This gem provides a simple interface to the Google Static Maps V2 API (http://code.google.com/apis/maps/documentation/staticmaps/)
4
4
 
5
+
6
+ = Installation
7
+ If you haven't already, add gemcutter as a gem source
8
+ [sudo] gem sources --add http://gemcutter.org
9
+
10
+ Then install this gem
11
+ [sudo] gem install google_static_maps_helper
12
+
13
+
14
+ = The easiest way of generating a Google Static Maps URL
15
+
16
+ GoogleStaticMapsHelper.url_for do
17
+ marker :lng => 1, :lat => 2
18
+ marker :lng => 3, :lat => 4
19
+ end
20
+
21
+ This will return the url for map with these markers. Place note that if you do use this approach you have to set key, size and sensor setting.
22
+ You do this by:
23
+ GoogleStaticMapsHelper.key = 'your google key'
24
+ GoogleStaticMapsHelper.size = '300x600'
25
+ GoogleStaticMapsHelper.sensor = false
26
+
27
+ If you are on Rails you can put it in your environment configuration file and while you are there you can add the following line inside the configuration block:
28
+ Rails::Initializer.run do |config|
29
+ config.gem 'google_static_maps_helper', :source => 'http://gemcutter.org'
30
+ ...
31
+ end
32
+
33
+
34
+ = A bit more "low-level" approach instantiating objects yourself
35
+
5
36
  == Marker
6
37
  A marker object is, not surprisingly, representing a marker in the Google static map. It is pushed into the Map object and is used
7
38
  to generate the URL for the static map. Markers which are of the same "type" (same color, label and size) are grouped together in the generated URL
@@ -45,9 +76,16 @@ Another thing you might want to do is to override the center point and zoom leve
45
76
  :center => '1,2',
46
77
  :zoom => 4)
47
78
 
79
+
80
+
48
81
  == Paths
49
82
  Paths are not yet supported.
50
83
 
84
+
85
+ == TODO
86
+ * Paths
87
+ * Ruby 1.9 support
88
+
51
89
  == Copyright
52
90
 
53
91
  Copyright (c) 2009 Thorbjørn Hermansen. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{google_static_maps_helper}
8
- s.version = "1.1.0"
8
+ s.version = "1.2.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-13}
12
+ s.date = %q{2009-10-14}
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 = [
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  "lib/google_static_maps_helper.rb",
28
28
  "lib/google_static_maps_helper/map.rb",
29
29
  "lib/google_static_maps_helper/marker.rb",
30
+ "spec/google_static_maps_helper_spec.rb",
30
31
  "spec/map_spec.rb",
31
32
  "spec/marker_spec.rb",
32
33
  "spec/spec_helper.rb"
@@ -39,6 +40,7 @@ Gem::Specification.new do |s|
39
40
  s.test_files = [
40
41
  "spec/spec_helper.rb",
41
42
  "spec/marker_spec.rb",
43
+ "spec/google_static_maps_helper_spec.rb",
42
44
  "spec/map_spec.rb"
43
45
  ]
44
46
 
@@ -8,4 +8,14 @@ module GoogleStaticMapsHelper
8
8
  class OptionMissing < ArgumentError; end # Raised when required options is not sent in during construction
9
9
  class OptionNotExist < ArgumentError; end # Raised when incoming options include keys which is invalid
10
10
  class BuildDataMissing < Exception; end # Raised when incoming options include keys which is invalid
11
+
12
+ class << self
13
+ attr_accessor :key, :size, :sensor
14
+
15
+ def url_for(map_options = {}, &block)
16
+ map = Map.new({:key => key, :size => size, :sensor => sensor}.merge(map_options))
17
+ block.arity < 1 ? map.instance_eval(&block) : block.call(map)
18
+ map.url
19
+ end
20
+ end
11
21
  end
@@ -68,6 +68,11 @@ module GoogleStaticMapsHelper
68
68
  @markers.length
69
69
  end
70
70
 
71
+ def marker(*args)
72
+ marker = Marker.new(*args)
73
+ self << marker
74
+ end
75
+
71
76
 
72
77
  private
73
78
  def can_build?
@@ -44,9 +44,9 @@ module GoogleStaticMapsHelper
44
44
  # Returns a string wich is what Google Static map is using to
45
45
  # set the style on the marker. This ill include color, size and label
46
46
  def options_to_url_params
47
- params = DEFAULT_OPTIONS.keys.inject([]) do |params, attr|
47
+ params = DEFAULT_OPTIONS.keys.map(&:to_s).sort.inject([]) do |params, attr|
48
48
  value = send(attr)
49
- params << "#{attr}:#{value}" if value
49
+ params << "#{attr}:#{URI.escape(value)}" if value
50
50
  params
51
51
  end
52
52
 
@@ -0,0 +1,51 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe GoogleStaticMapsHelper do
4
+ describe "Friendly DSL API" do
5
+ describe "url_for" do
6
+ before do
7
+ GoogleStaticMapsHelper.key = 'my_key'
8
+ GoogleStaticMapsHelper.size = '300x500'
9
+ GoogleStaticMapsHelper.sensor = false
10
+ end
11
+
12
+ it "should have a responding method" do
13
+ GoogleStaticMapsHelper.respond_to?(:url_for).should be_true
14
+ end
15
+
16
+ it "should be possible to add markers to map through a b block" do
17
+ out = GoogleStaticMapsHelper.url_for do
18
+ marker :lat => 1, :lng => 2
19
+ end
20
+
21
+ out.should include('markers=color:red|size:mid|1,2')
22
+ end
23
+
24
+ it "should be possible to override the default map construction values" do
25
+ out = GoogleStaticMapsHelper.url_for(:size => '800x800') do
26
+ marker :lat => 1, :lng => 2
27
+ end
28
+
29
+ out.should include('size=800x800')
30
+ end
31
+
32
+ it "should be possible to use inside a class, using attributes of that class" do
33
+ class TestingClass
34
+ attr_reader :location
35
+
36
+ def initialize
37
+ @location = {:lat => 1, :lng => 5}
38
+ end
39
+
40
+ def url
41
+ GoogleStaticMapsHelper.url_for do |map|
42
+ map.marker location
43
+ end
44
+ end
45
+ end
46
+
47
+ TestingClass.new.url.should include('markers=color:red|size:mid|1,5')
48
+ end
49
+ end
50
+ end
51
+ end
@@ -156,8 +156,8 @@ describe GoogleStaticMapsHelper::Map do
156
156
  ['key', 'MY_GOOGLE_KEY'],
157
157
  ['sensor', 'true'],
158
158
  ['size', '400x600'],
159
- ['markers', 'size:mid|color:green|6,5'],
160
- ['markers', 'size:mid|color:red|2,1']
159
+ ['markers', 'color:green|size:mid|6,5'],
160
+ ['markers', 'color:red|size:mid|2,1']
161
161
  ].each do |pair|
162
162
  key, value = pair
163
163
  it "should have key: #{key} and value: #{value}" do
@@ -178,8 +178,8 @@ describe GoogleStaticMapsHelper::Map do
178
178
  ['key', 'MY_GOOGLE_KEY'],
179
179
  ['sensor', 'true'],
180
180
  ['size', '400x600'],
181
- ['markers', 'size:mid|color:green|6,5|8,7'],
182
- ['markers', 'size:mid|color:red|2,1|4,3']
181
+ ['markers', 'color:green|size:mid|6,5|8,7'],
182
+ ['markers', 'color:red|size:mid|2,1|4,3']
183
183
  ].each do |pair|
184
184
  key, value = pair
185
185
  it "should have key: #{key} and value: #{value}" do
@@ -188,4 +188,10 @@ describe GoogleStaticMapsHelper::Map do
188
188
  end
189
189
  end
190
190
  end
191
+
192
+ it "should provide a helper method named marker which will create a new marker and add it to the map" do
193
+ map = GoogleStaticMapsHelper::Map.new(@@require_options)
194
+ map.marker(:lat => 1, :lng => 2)
195
+ map.length.should eql(1)
196
+ end
191
197
  end
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.1.0
4
+ version: 1.2.0
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-13 00:00:00 +02:00
12
+ date: 2009-10-14 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,6 +42,7 @@ files:
42
42
  - lib/google_static_maps_helper.rb
43
43
  - lib/google_static_maps_helper/map.rb
44
44
  - lib/google_static_maps_helper/marker.rb
45
+ - spec/google_static_maps_helper_spec.rb
45
46
  - spec/map_spec.rb
46
47
  - spec/marker_spec.rb
47
48
  - spec/spec_helper.rb
@@ -76,4 +77,5 @@ summary: This gem provides a simple interface to the Google Static Maps V2 API
76
77
  test_files:
77
78
  - spec/spec_helper.rb
78
79
  - spec/marker_spec.rb
80
+ - spec/google_static_maps_helper_spec.rb
79
81
  - spec/map_spec.rb