googlestaticmap 1.2.4 → 1.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5927d0355fe8b5d37805cdd00be4c0101d160d43
4
- data.tar.gz: 7678c34e611f1515334a2fc686e8509b6fa50120
3
+ metadata.gz: 7b5b6fcba846462e64275c8edcedc7e4b42d85de
4
+ data.tar.gz: 1d921c206a737b39936ce5668767a939e228e019
5
5
  SHA512:
6
- metadata.gz: 1cea618d5b2937fe8f500c7dd88ce5814c93d10b7362cfc73999215876131f3eb959ec3e82ea863a63a86dce61fa925e9b7ea1599828d869c1502f8ae715ad86
7
- data.tar.gz: 23564bec56865aedd2acbc028341389270571140054d1aea0dcf9f8966835f55bad4a81b0728fd41323e424d3b1af8f83075588557897ff290c0210612a93a52
6
+ metadata.gz: 3a93b1e16dc3779d1465f43ec6d79c76dcdf0ed4a51eaca0a7c5a8d35a434c944e602bbd5be6b80fab97a63e7b136d238cedcf2010bd498f003a909c8f833f56
7
+ data.tar.gz: f7aa37ed92164ea33e8be0437d817c3908d7250c0358dedc4b30b16dddc8986558a6998e6655a72fa105d4147a227d044087907b8177f095e4ccb61472b499f5
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.2.5 / 2018-05-07
2
+ * Added styles, plain_string options to GoogleStaticMap (thanks anplug!)
3
+ * Added anchor option to MapMarker (thanks anplug!)
4
+
1
5
  == 1.2.4 / 2017-03-05
2
6
  * Added language option (thanks kntmrkm!)
3
7
 
data/README.md CHANGED
@@ -30,7 +30,7 @@ this URL as the src of an img element on an HTML page
30
30
  When using the url function you can force the final url to use http or https:
31
31
 
32
32
  image_url = map.url('http')
33
-
33
+
34
34
  Get a map with blue markers at the White House and the Supreme Court, zoomed
35
35
  the closest that the map can be with both markers visible, at the default
36
36
  size. image will be the binary data of the map
@@ -87,6 +87,16 @@ class GoogleStaticMap
87
87
  # see https://developers.google.com/maps/documentation/static-maps/intro for details
88
88
  attr_accessor :language
89
89
 
90
+ # Styles - see https://developers.google.com/maps/documentation/maps-static/styling
91
+ # styles is should be represented as array of objects
92
+ # [{feature: 'featureArgument, element: 'elementArgument', rule1: 'rule1Arguement', rule2: 'rule2Arguement', ...},
93
+ # ...]
94
+ attr_accessor :styles
95
+
96
+ # In case when some parameter should be inserted manually
97
+ # For example, using https://mapstyle.withgoogle.com/ tool and inserting generated style as is
98
+ attr_accessor :plain_string
99
+
90
100
  # Takes an optional hash of attributes
91
101
  def initialize(attrs={})
92
102
  defaults = {:width => 500, :height => 350, :markers => [],
@@ -123,7 +133,7 @@ class GoogleStaticMap
123
133
  attrs = GoogleStaticMapHelpers.safe_instance_variables(self,
124
134
  ["markers", "paths", "width", "height", "center",
125
135
  "proxy_address", "proxy_port", "api_key", "client_id",
126
- "private_key"],
136
+ "private_key", "styles", "plain_string"],
127
137
  :cgi_escape_values => true).to_a
128
138
  attrs << ["size", "#{@width}x#{@height}"] if @width && @height
129
139
  @markers.each {|m| attrs << ["markers",m.to_s] }
@@ -131,7 +141,9 @@ class GoogleStaticMap
131
141
  attrs << ["center", @center.to_s] if !@center.nil?
132
142
  attrs << ["key", @api_key] if !@api_key.nil?
133
143
  attrs << ["client", @client_id] if !@client_id.nil?
144
+ get_styles.each { |style| attrs << style } if !@styles.nil?
134
145
  path << attrs.sort_by {|k,v| k}.collect {|attr| "#{attr[0]}=#{attr[1]}"}.join("&")
146
+ path << "&#{@plain_string}" if !@plain_string.nil?
135
147
  if (!@api_key.nil? || !@client_id.nil?) && !@private_key.nil?
136
148
  signature = GoogleStaticMapHelpers.sign(path, @private_key)
137
149
  path << "&signature=" << signature
@@ -175,6 +187,14 @@ class GoogleStaticMap
175
187
  end
176
188
  end
177
189
 
190
+ def get_styles
191
+ @styles.map do |style|
192
+ values = style.each_pair.map do |(key, value)|
193
+ "#{key.to_s}:#{value}"
194
+ end
195
+ ["style", values.join(CGI.escape('|'))]
196
+ end
197
+ end
178
198
  end
179
199
 
180
200
  # Container class for a location on the map. Set either a latitude and
@@ -231,6 +251,10 @@ class MapMarker
231
251
  # visible region and its opacity/transparency.
232
252
  attr_accessor :shadow
233
253
 
254
+ # Manage position of marker (anchor:center/bottom/top..)
255
+ # See - https://developers.google.com/maps/documentation/maps-static/intro#Markers
256
+ attr_accessor :anchor
257
+
234
258
  # Takes an optional hash of attributes
235
259
  def initialize(attrs={})
236
260
  attrs.each {|k,v| self.send("#{k}=".to_sym,v)}
@@ -117,6 +117,39 @@ class GoogleStaticMapTest < Test::Unit::TestCase #:nodoc: all
117
117
  assert_no_match /^https:\/\/maps.googleapis.com/, f
118
118
  end
119
119
 
120
+ def test_url_styles
121
+ g = default_map
122
+ g.styles = [
123
+ { feature: 'road.local', element: 'geometry', color: '0x00ff00' },
124
+ { feature: 'landscape', element: 'geometry.fill', color: '0x000000' },
125
+ { element: 'labels', invert_lightness: true },
126
+ { feature: 'road.arterial', element: 'labels', invert_lightness: false }
127
+ ]
128
+ u = nil
129
+
130
+ assert_nothing_raised { u = g.url }
131
+ assert_equal 11, u.split("&").length, u
132
+ assert !u.include?("styles"), "styles have to be convered to array of 'style'"
133
+ assert u.include?('style=feature:road.local%7Celement:geometry%7Ccolor:0x00ff00'), u
134
+ assert u.include?('style=feature:landscape%7Celement:geometry.fill%7Ccolor:0x000000'), u
135
+ assert u.include?('style=element:labels%7Cinvert_lightness:true&style=feature:road.arterial%7Celement:labels%7Cinvert_lightness:false'), u
136
+
137
+ assert_nothing_raised {g.relative_url}
138
+ end
139
+
140
+ def test_url_plain_string
141
+ g = default_map
142
+ g.plain_string = "style=feature:road.local%7Celement:geometry%7Ccolor:0x00ff00&style=feature:landscape%7Celement:geometry.fill%7Ccolor:0x000000"
143
+ u = nil
144
+
145
+ assert_nothing_raised { u = g.url }
146
+ assert_equal 9, u.split("&").length, u
147
+ assert !u.include?("plain_string")
148
+ assert u.include?('&style=feature:road.local%7Celement:geometry%7Ccolor:0x00ff00&style=feature:landscape%7Celement:geometry.fill%7Ccolor:0x000000')
149
+
150
+ assert_nothing_raised {g.relative_url}
151
+ end
152
+
120
153
  def test_url_api_key
121
154
  g = default_map
122
155
  g.api_key = "asdfapikey"
@@ -27,16 +27,18 @@ class MapMarkerTest < Test::Unit::TestCase #:nodoc: all
27
27
  assert_equal "B", m.label
28
28
  assert_equal "http://www.google.com", m.icon
29
29
  assert_equal false, m.shadow
30
+ assert_equal 'center', m.anchor
30
31
  end
31
32
 
32
33
  def test_get_string
33
34
  m = default_marker
34
35
  s = nil
35
36
  assert_nothing_raised {s = m.to_s}
36
- assert_equal 6, s.split(MAP_SEPARATOR).length
37
+ assert_equal 7, s.split(MAP_SEPARATOR).length
37
38
  assert s.include?(CGI.escape("Washington, DC"))
38
39
  assert s.include?("color:green")
39
40
  assert s.include?("icon:http://www.google.com")
41
+ assert s.include?("anchor:center")
40
42
  end
41
43
 
42
44
  def test_string_is_a_valid_ruby_uri
@@ -51,6 +53,7 @@ class MapMarkerTest < Test::Unit::TestCase #:nodoc: all
51
53
  :size => "tiny",
52
54
  :label => "B",
53
55
  :icon => "http://www.google.com",
56
+ :anchor => 'center',
54
57
  :shadow => false)
55
58
  end
56
59
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: googlestaticmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brent Sowers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-05 00:00:00.000000000 Z
11
+ date: 2018-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -92,13 +92,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  version: '0'
93
93
  requirements: []
94
94
  rubyforge_project:
95
- rubygems_version: 2.5.2
95
+ rubygems_version: 2.4.8
96
96
  signing_key:
97
97
  specification_version: 4
98
98
  summary: Class for retrieving maps from the Google Maps Static API service
99
99
  test_files:
100
100
  - test/tc_map_path_and_polygon.rb
101
- - test/tc_helper.rb
102
- - test/tc_google_static_map.rb
103
101
  - test/tc_map_location.rb
102
+ - test/tc_google_static_map.rb
103
+ - test/tc_helper.rb
104
104
  - test/tc_map_marker.rb