googlestaticmap 1.1.4 → 1.2.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.
- checksums.yaml +4 -4
- data/History.txt +5 -0
- data/README.md +85 -0
- data/lib/googlestaticmap.rb +54 -68
- data/test/tc_google_static_map.rb +46 -8
- metadata +12 -11
- data/README +0 -60
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ddc7e2e770498a9ac12d73e0d79cf954b4333c9
|
4
|
+
data.tar.gz: 6e9dfcd215d46cb14de2708959e0caa5fba8e194
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2aa7f214d79aa9c8d0b0042b5169ee964b1a34b5310e09c018c6d887af82885252a11634ec89cc71be1c1490c92228b6bf7df431887e6de85552e654bcbfc328
|
7
|
+
data.tar.gz: b4ec9c02c81f05483bab97f3e066e877dfcb2d73f9b83dfd3dd139a39b5a1d23377cdad69c939139da20cff40fd0576698ea666ebc7671caf94483b8cf2c8519
|
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== 1.2.0 / 2014-03-03
|
2
|
+
* Added support for setting an API key for monitoring, and a client ID/private key for business customers (thanks forrest!)
|
3
|
+
* Changed to use maps.googleapis.com instead of maps.google.com (thanks nathany!)
|
4
|
+
* Explicitly added MIT licensing
|
5
|
+
|
1
6
|
== 1.1.4 / 2013-07-04
|
2
7
|
* Properly URL encoding the URLs, caused an issue when using URI.parse on generated URLs (thanks nathany!)
|
3
8
|
|
data/README.md
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
# googlestaticmap gem
|
2
|
+
|
3
|
+
This gem is on Rubygems, simply type "gem install googlestaticmap" to install it.
|
4
|
+
|
5
|
+
Available on github at http://github.com/brentsowers1/googlestaticmap
|
6
|
+
|
7
|
+
Class for generating URLs for and downloading static maps from the Google Maps
|
8
|
+
Static API service. GoogleStaticMap is the main class to use, instantiate it,
|
9
|
+
set the attributes to what you want, and call url on the instance to get the
|
10
|
+
URL to download the map from. You can also call get_map to actually
|
11
|
+
download the map from Google, return the bytes, and optionally write the
|
12
|
+
image to a file.
|
13
|
+
|
14
|
+
## Examples:
|
15
|
+
|
16
|
+
Get a simple static map centered at Washington, DC, with the default size
|
17
|
+
(500 x 350), zoomed to level 11. image will be the binary data of the map
|
18
|
+
|
19
|
+
require 'googlestaticmap'
|
20
|
+
map = GoogleStaticMap.new(:zoom => 11, :center => MapLocation.new(:address => "Washington, DC"))
|
21
|
+
image = map.get_map
|
22
|
+
|
23
|
+
Get the URL of the image described in the previous example, so you can insert
|
24
|
+
this URL as the src of an img element on an HTML page
|
25
|
+
|
26
|
+
require 'googlestaticmap'
|
27
|
+
map = GoogleStaticMap.new(:zoom => 11, :center => MapLocation.new(:address => "Washington, DC"))
|
28
|
+
image_url = map.url(:auto)
|
29
|
+
|
30
|
+
Get a map with blue markers at the White House and the Supreme Court, zoomed
|
31
|
+
the closest that the map can be with both markers visible, at the default
|
32
|
+
size. image will be the binary data of the map
|
33
|
+
|
34
|
+
require 'googlestaticmap'
|
35
|
+
map = GoogleStaticMap.new
|
36
|
+
map.markers << MapMarker.new(:color => "blue", :location => MapLocation.new(:address => "1600 Pennsylvania Ave., Washington, DC"))
|
37
|
+
map.markers << MapMarker.new(:color => "blue", :location => MapLocation.new(:address => "1 1st Street Northeast, Washington, DC"))
|
38
|
+
image = map.get_map
|
39
|
+
|
40
|
+
Get a GIF satellite map, with a size of 640 x 480, with a
|
41
|
+
semi transparent green box drawn around a set of 4 coordinates, with the box
|
42
|
+
outline solid, centered at the middle of the box, written out to the file
|
43
|
+
map.gif:
|
44
|
+
|
45
|
+
require 'googlestaticmap'
|
46
|
+
map = GoogleStaticMap.new(:maptype => "satellite", :format => "gif", :width => 640, :height => 480)
|
47
|
+
poly = MapPolygon.new(:color => "0x00FF00FF", :fillcolor => "0x00FF0060")
|
48
|
+
poly.points << MapLocation.new(:latitude => 38.8, :longitude => -77.5)
|
49
|
+
poly.points << MapLocation.new(:latitude => 38.8, :longitude => -76.9)
|
50
|
+
poly.points << MapLocation.new(:latitude => 39.2, :longitude => -76.9)
|
51
|
+
poly.points << MapLocation.new(:latitude => 39.2, :longitude => -77.5)
|
52
|
+
poly.points << MapLocation.new(:latitude => 38.8, :longitude => -77.5)
|
53
|
+
map.paths << poly
|
54
|
+
map.get_map("map.gif")
|
55
|
+
|
56
|
+
If you're working behind a proxy, create the map object this way:
|
57
|
+
|
58
|
+
map = GoogleStaticMap.new(:proxy_address=>'my.proxy.host', :proxy_port=>8080, :width => 640, :height => 480)
|
59
|
+
|
60
|
+
If you have a public API key for tracking usage (https://developers.google.com/maps/documentation/staticmaps/#api_key):
|
61
|
+
|
62
|
+
map = GoogleStaticMap.new(:api_key => "my_api_key")
|
63
|
+
|
64
|
+
If you are a Maps For Businesses customer with a client ID and private key (https://developers.google.com/maps/documentation/business/webservices/#client_id)
|
65
|
+
(note that you cannot set an api_key if you want to use client_id and private_key):
|
66
|
+
|
67
|
+
map = GoogleStaticMap.new(:client_id => "my_client_id", :private_key => "my_private_key")
|
68
|
+
|
69
|
+
## Compatibility
|
70
|
+
|
71
|
+
This has been tested and is working with Ruby 1.8.7, 1.9.3, 2.0.0, and 2.1.1, and JRuby 1.7.11.
|
72
|
+
|
73
|
+
## Author
|
74
|
+
|
75
|
+
Brent Sowers (mailto:brent@coordinatecommons.com)
|
76
|
+
|
77
|
+
## Feedback
|
78
|
+
|
79
|
+
To post comments about this gem, go to my blog posting at http://www.brentsowers.com/2010/08/gem-for-getting-google-static-maps.html. Contributions are also welcome! Fork the repo and issue a pull request, and I'll review it.
|
80
|
+
|
81
|
+
## License
|
82
|
+
|
83
|
+
googlestaticmap is released under the [MIT License](http://www.opensource.org/licenses/MIT). You're free to do whatever you want with this.
|
84
|
+
|
85
|
+
|
data/lib/googlestaticmap.rb
CHANGED
@@ -1,61 +1,9 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
# This gem is on Rubygems, simply type "gem install googlestaticmap" to install it.
|
4
|
-
#
|
5
|
-
# Available on github at http://github.com/brentsowers1/googlestaticmap
|
6
|
-
#
|
7
|
-
# Class for generating URLs for and downloading static maps from the Google Maps
|
8
|
-
# Static API service. GoogleStaticMap is the main class to use, instantiate it,
|
9
|
-
# set the attributes to what you want, and call full_url on the instance to get
|
10
|
-
# the URL to download the map from. You can also call get_map to actually
|
11
|
-
# download the map from Google, return the bytes, and optionally write the
|
12
|
-
# image to a file.
|
13
|
-
#
|
14
|
-
# Examples:
|
15
|
-
#
|
16
|
-
# Get a simple static map centered at Washington, DC, with the default size
|
17
|
-
# (500 x 350), zoomed to level 11
|
18
|
-
# map = GoogleStaticMap.new(:zoom => 11, :center => MapLocation.new(:address => "Washington, DC"))
|
19
|
-
# image = map.get_map
|
20
|
-
#
|
21
|
-
# Get the URL of the image described in the previous example, so you can insert
|
22
|
-
# this URL as the src of an img element on an HTML page
|
23
|
-
# require 'googlestaticmap'
|
24
|
-
# map = GoogleStaticMap.new(:zoom => 11, :center => MapLocation.new(:address => "Washington, DC"))
|
25
|
-
# image_url = map.url(:auto)
|
26
|
-
#
|
27
|
-
# Get a map with blue markers at the White House and the Supreme Court, zoomed
|
28
|
-
# the closest that the map can be with both markers visible, at the default
|
29
|
-
# size.
|
30
|
-
# map = GoogleStaticMap.new
|
31
|
-
# map.markers << MapMarker.new(:color => "blue", :location => MapLocation.new(:address => "1600 Pennsylvania Ave., Washington, DC"))
|
32
|
-
# map.markers << MapMarker.new(:color => "blue", :location => MapLocation.new(:address => "1 1st Street Northeast, Washington, DC"))
|
33
|
-
# image = map.get_map
|
34
|
-
#
|
35
|
-
# Get a GIF satellite map, with a size of 640 x 480, with a
|
36
|
-
# semi transparent green box drawn around a set of 4 coordinates, with the box
|
37
|
-
# outline solid, centered at the middle of the box, written out to the file
|
38
|
-
# map.gif:
|
39
|
-
# map = GoogleStaticMap.new(:maptype => "satellite", :format => "gif", :width => 640, :height => 480)
|
40
|
-
# poly = MapPolygon.new(:color => "0x00FF00FF", :fillcolor => "0x00FF0060")
|
41
|
-
# poly.points << MapLocation.new(:latitude => 38.8, :longitude => -77.5)
|
42
|
-
# poly.points << MapLocation.new(:latitude => 38.8, :longitude => -76.9)
|
43
|
-
# poly.points << MapLocation.new(:latitude => 39.2, :longitude => -76.9)
|
44
|
-
# poly.points << MapLocation.new(:latitude => 39.2, :longitude => -77.5)
|
45
|
-
# poly.points << MapLocation.new(:latitude => 38.8, :longitude => -77.5)
|
46
|
-
# map.paths << poly
|
47
|
-
# map.get_map("map.gif")
|
48
|
-
#
|
49
|
-
# If you're working behind a proxy, create the map object this way:
|
50
|
-
# map = GoogleStaticMap.new(:proxy_address=>'my.proxy.host', :proxy_port=>8080, :width => 640, :height => 480)
|
51
|
-
#
|
52
|
-
# Author:: Brent Sowers (mailto:brent@coordinatecommons.com)
|
53
|
-
# License:: You're free to do whatever you want with this
|
54
|
-
#
|
55
|
-
# To post comments about this gem, go to my blog posting at
|
56
|
-
# http://www.brentsowers.com/2010/08/gem-for-getting-google-static-maps.html
|
1
|
+
# Main file for the googlestaticmap gem. See README.md for a full desciption with examples, licensing, contact
|
2
|
+
# info, etc.
|
57
3
|
|
58
4
|
require 'cgi'
|
5
|
+
require 'base64'
|
6
|
+
require 'openssl'
|
59
7
|
require 'net/http'
|
60
8
|
require 'net/https' if RUBY_VERSION < "1.9"
|
61
9
|
require File.dirname(__FILE__) + '/googlestaticmap_helper'
|
@@ -118,11 +66,22 @@ class GoogleStaticMap
|
|
118
66
|
# If proxy_address is set, set this to the port of the proxy server
|
119
67
|
attr_accessor :proxy_port
|
120
68
|
|
69
|
+
# API Key - see https://developers.google.com/maps/documentation/staticmaps/#api_key for details
|
70
|
+
# Note that if this is set, the client ID and private key will be ignored if set
|
71
|
+
attr_accessor :api_key
|
72
|
+
|
73
|
+
# ClientId/PrivateKey for business customers -
|
74
|
+
# see https://developers.google.com/maps/documentation/business/webservices/auth#generating_valid_signatures for details
|
75
|
+
# These will be ignored if api_key is set
|
76
|
+
attr_accessor :client_id
|
77
|
+
attr_accessor :private_key
|
78
|
+
|
121
79
|
# Takes an optional hash of attributes
|
122
80
|
def initialize(attrs={})
|
123
81
|
defaults = {:width => 500, :height => 350, :markers => [],
|
124
82
|
:sensor => false, :maptype => "roadmap", :paths => [],
|
125
|
-
:proxy_port => nil, :proxy_address => nil,
|
83
|
+
:proxy_port => nil, :proxy_address => nil, :api_key => nil,
|
84
|
+
:client_id => nil, :private_key => nil}
|
126
85
|
|
127
86
|
attributes = defaults.merge(attrs)
|
128
87
|
attributes.each {|k,v| self.send("#{k}=".to_sym,v)}
|
@@ -130,9 +89,9 @@ class GoogleStaticMap
|
|
130
89
|
|
131
90
|
# Returns the full URL to retrieve this static map. You can use this as the
|
132
91
|
# src for an img to display an image directly on a web page
|
133
|
-
# Example - "http://maps.
|
92
|
+
# Example - "http://maps.googleapis.com/maps/api/staticmap?params..."
|
134
93
|
# +protocol+ can be 'http', 'https' or :auto. Specifying :auto will not return
|
135
|
-
# a protocol in the URL ("//maps.
|
94
|
+
# a protocol in the URL ("//maps.googleapis.com/..."), allowing the browser to
|
136
95
|
# select the appropriate protocol (if the page is loaded with https, it will
|
137
96
|
# use https). Defaults to http
|
138
97
|
def url(protocol='http')
|
@@ -142,22 +101,30 @@ class GoogleStaticMap
|
|
142
101
|
protocol = 'http' unless protocol == 'http' || protocol == 'https' ||
|
143
102
|
protocol == :auto
|
144
103
|
protocol = protocol == :auto ? '' : protocol + ":"
|
145
|
-
|
104
|
+
base = "#{protocol}//maps.googleapis.com"
|
105
|
+
path = "/maps/api/staticmap?"
|
146
106
|
attrs = GoogleStaticMapHelpers.safe_instance_variables(self,
|
147
107
|
["markers", "paths", "width", "height", "center",
|
148
|
-
"proxy_address", "proxy_port"
|
108
|
+
"proxy_address", "proxy_port", "api_key", "client_id",
|
109
|
+
"private_key"],
|
149
110
|
:cgi_escape_values => true).to_a
|
150
111
|
attrs << ["size", "#{@width}x#{@height}"] if @width && @height
|
151
|
-
markers.each {|m| attrs << ["markers",m.to_s] }
|
152
|
-
paths.each {|p| attrs << ["path",p.to_s] }
|
153
|
-
attrs << ["center", center.to_s] if
|
154
|
-
|
112
|
+
@markers.each {|m| attrs << ["markers",m.to_s] }
|
113
|
+
@paths.each {|p| attrs << ["path",p.to_s] }
|
114
|
+
attrs << ["center", @center.to_s] if !@center.nil?
|
115
|
+
attrs << ["key", @api_key] if !@api_key.nil?
|
116
|
+
attrs << ["client", @client_id] if @api_key.nil? && !@client_id.nil? && !@private_key.nil?
|
117
|
+
path << attrs.collect {|attr| "#{attr[0]}=#{attr[1]}"}.join("&")
|
118
|
+
if @api_key.nil? && !@client_id.nil? && !@private_key.nil?
|
119
|
+
path << "&signature=" << sign(path)
|
120
|
+
end
|
121
|
+
base + path
|
155
122
|
end
|
156
123
|
|
157
|
-
# Returns the URL to retrieve the map, relative to http://maps.
|
124
|
+
# Returns the URL to retrieve the map, relative to http://maps.googleapis.com
|
158
125
|
# Example - "/maps/api/staticmap?params..."
|
159
126
|
def relative_url(protocol='http')
|
160
|
-
url(protocol).gsub(/[^\/]*\/\/maps\.
|
127
|
+
url(protocol).gsub(/[^\/]*\/\/maps\.googleapis\.com/, "")
|
161
128
|
end
|
162
129
|
|
163
130
|
|
@@ -172,7 +139,7 @@ class GoogleStaticMap
|
|
172
139
|
def get_map(output_file=nil, protocol='http')
|
173
140
|
protocol = 'http' unless protocol == 'http' || protocol == 'https'
|
174
141
|
port = protocol == 'https' ? 443 : 80
|
175
|
-
http = Net::HTTP.Proxy(@proxy_address,@proxy_port).new("maps.
|
142
|
+
http = Net::HTTP.Proxy(@proxy_address,@proxy_port).new("maps.googleapis.com", port)
|
176
143
|
http.use_ssl = protocol == 'https'
|
177
144
|
|
178
145
|
resp = http.get2(relative_url(protocol))
|
@@ -189,6 +156,25 @@ class GoogleStaticMap
|
|
189
156
|
end
|
190
157
|
end
|
191
158
|
end
|
159
|
+
|
160
|
+
private
|
161
|
+
|
162
|
+
# signing code is grabbed from https://github.com/alexreisner/geocoder
|
163
|
+
def sign(path)
|
164
|
+
raw_private_key = url_safe_base64_decode(@private_key)
|
165
|
+
digest = OpenSSL::Digest.new('sha1')
|
166
|
+
raw_signature = OpenSSL::HMAC.digest(digest, raw_private_key, path)
|
167
|
+
url_safe_base64_encode(raw_signature)
|
168
|
+
end
|
169
|
+
|
170
|
+
def url_safe_base64_decode(base64_string)
|
171
|
+
Base64.decode64(base64_string.tr('-_', '+/'))
|
172
|
+
end
|
173
|
+
|
174
|
+
def url_safe_base64_encode(raw)
|
175
|
+
Base64.encode64(raw).tr('+/', '-_').strip
|
176
|
+
end
|
177
|
+
|
192
178
|
end
|
193
179
|
|
194
180
|
# Container class for a location on the map. Set either a latitude and
|
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'test/unit'
|
3
3
|
require 'cgi'
|
4
4
|
require 'net/http'
|
5
|
-
require 'mocha'
|
5
|
+
require 'mocha/setup'
|
6
6
|
require File.dirname(__FILE__) + '/../lib/googlestaticmap'
|
7
7
|
|
8
8
|
class MockSuccess < Net::HTTPSuccess #:nodoc: all
|
@@ -67,13 +67,17 @@ class GoogleStaticMapTest < Test::Unit::TestCase #:nodoc: all
|
|
67
67
|
assert u.include?("maptype=hybrid")
|
68
68
|
assert u.include?("scale=2")
|
69
69
|
assert u.include?("asdf")
|
70
|
-
assert u.include?("http://maps.
|
71
|
-
assert u.include?("color:0x00FF00FF
|
70
|
+
assert u.include?("http://maps.googleapis.com")
|
71
|
+
assert u.include?("color:0x00FF00FF")
|
72
|
+
assert u.include?("fillcolor:0x00FF0060")
|
73
|
+
assert u.include?("38.8,-77.5#{MAP_SEPARATOR}38.8,-76.9#{MAP_SEPARATOR}39.2,-76.9#{MAP_SEPARATOR}39.2,-77.5#{MAP_SEPARATOR}38.8,-77.5"), "Polygon not in URL - #{u}"
|
72
74
|
assert u.include?("Washington%2C+DC")
|
75
|
+
assert !u.include?("key"), "API included when it shouldn't be"
|
76
|
+
assert !u.include?("client"), "Client included when it shouldn't be"
|
73
77
|
|
74
78
|
f = nil
|
75
79
|
assert_nothing_raised {f = g.relative_url}
|
76
|
-
assert !f.include?("http://maps.
|
80
|
+
assert !f.include?("http://maps.googleapis.com")
|
77
81
|
end
|
78
82
|
|
79
83
|
def test_url_auto
|
@@ -81,10 +85,10 @@ class GoogleStaticMapTest < Test::Unit::TestCase #:nodoc: all
|
|
81
85
|
u = nil
|
82
86
|
assert_nothing_raised { u = g.url(:auto) }
|
83
87
|
assert_equal 7, u.split("&").length, u
|
84
|
-
assert u =~ /^\/\/maps.
|
88
|
+
assert u =~ /^\/\/maps.googleapis.com/, u
|
85
89
|
f = nil
|
86
90
|
assert_nothing_raised {f = g.relative_url}
|
87
|
-
assert_no_match /^\/\/maps.
|
91
|
+
assert_no_match /^\/\/maps.googleapis.com/, f
|
88
92
|
end
|
89
93
|
|
90
94
|
def test_url_https
|
@@ -92,10 +96,44 @@ class GoogleStaticMapTest < Test::Unit::TestCase #:nodoc: all
|
|
92
96
|
u = nil
|
93
97
|
assert_nothing_raised { u = g.url('https') }
|
94
98
|
assert_equal 7, u.split("&").length, u
|
95
|
-
assert u =~ /^https:\/\/maps.
|
99
|
+
assert u =~ /^https:\/\/maps.googleapis.com/
|
96
100
|
f = nil
|
97
101
|
assert_nothing_raised {f = g.relative_url}
|
98
|
-
assert_no_match /^https:\/\/maps.
|
102
|
+
assert_no_match /^https:\/\/maps.googleapis.com/, f
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_url_api_key
|
106
|
+
g = default_map
|
107
|
+
g.api_key = "asdfapikey"
|
108
|
+
u = nil
|
109
|
+
assert_nothing_raised { u = g.url }
|
110
|
+
assert_equal 8, u.split("&").length, u
|
111
|
+
assert u.include?("key=asdfapikey"), u
|
112
|
+
assert !u.include?("client"), u
|
113
|
+
assert !u.include?("signature"), u
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_url_for_business
|
117
|
+
g = default_map
|
118
|
+
g.client_id = "asdfclientid"
|
119
|
+
g.private_key = "asdfprivatekey"
|
120
|
+
u = nil
|
121
|
+
assert_nothing_raised { u = g.url }
|
122
|
+
assert_equal 9, u.split("&").length, u
|
123
|
+
assert u.include?("signature="), u
|
124
|
+
assert u.include?("client=asdfclientid"), u
|
125
|
+
assert !u.include?("key="), u
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_url_for_business_no_key
|
129
|
+
g = default_map
|
130
|
+
g.client_id = "asdfclientid"
|
131
|
+
u = nil
|
132
|
+
assert_nothing_raised { u = g.url }
|
133
|
+
assert_equal 7, u.split("&").length, u
|
134
|
+
assert !u.include?("signature=")
|
135
|
+
assert !u.include?("client=asdfclientid")
|
136
|
+
assert !u.include?("key=")
|
99
137
|
end
|
100
138
|
|
101
139
|
def test_get_map_success_no_file_http
|
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.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brent Sowers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Easily retrieve single PNG, GIF, or JPG map images from Google with your
|
14
14
|
own custom markers and paths using the Static Maps API service with this gem. Simply
|
@@ -18,20 +18,21 @@ email: brent@coordinatecommons.com
|
|
18
18
|
executables: []
|
19
19
|
extensions: []
|
20
20
|
extra_rdoc_files:
|
21
|
-
- README
|
21
|
+
- README.md
|
22
22
|
- History.txt
|
23
23
|
files:
|
24
|
+
- History.txt
|
25
|
+
- README.md
|
24
26
|
- lib/googlestaticmap.rb
|
25
27
|
- lib/googlestaticmap_helper.rb
|
26
|
-
- test/tc_map_path_and_polygon.rb
|
27
|
-
- test/tc_map_location.rb
|
28
28
|
- test/tc_google_static_map.rb
|
29
29
|
- test/tc_helper.rb
|
30
|
+
- test/tc_map_location.rb
|
30
31
|
- test/tc_map_marker.rb
|
31
|
-
-
|
32
|
-
- History.txt
|
32
|
+
- test/tc_map_path_and_polygon.rb
|
33
33
|
homepage: http://www.coordinatecommons.com/googlestaticmap/
|
34
|
-
licenses:
|
34
|
+
licenses:
|
35
|
+
- MIT
|
35
36
|
metadata: {}
|
36
37
|
post_install_message:
|
37
38
|
rdoc_options: []
|
@@ -39,17 +40,17 @@ require_paths:
|
|
39
40
|
- lib
|
40
41
|
required_ruby_version: !ruby/object:Gem::Requirement
|
41
42
|
requirements:
|
42
|
-
- -
|
43
|
+
- - ">="
|
43
44
|
- !ruby/object:Gem::Version
|
44
45
|
version: '0'
|
45
46
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
47
|
requirements:
|
47
|
-
- -
|
48
|
+
- - ">="
|
48
49
|
- !ruby/object:Gem::Version
|
49
50
|
version: '0'
|
50
51
|
requirements: []
|
51
52
|
rubyforge_project:
|
52
|
-
rubygems_version: 2.
|
53
|
+
rubygems_version: 2.2.2
|
53
54
|
signing_key:
|
54
55
|
specification_version: 4
|
55
56
|
summary: Class for retrieving maps from the Google Maps Static API service
|
data/README
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
= googlestaticmap gem
|
2
|
-
|
3
|
-
This gem is on Rubygems, simply type "gem install googlestaticmap" to install it.
|
4
|
-
|
5
|
-
Available on github at http://github.com/brentsowers1/googlestaticmap
|
6
|
-
|
7
|
-
Class for generating URLs for and downloading static maps from the Google Maps
|
8
|
-
Static API service. GoogleStaticMap is the main class to use, instantiate it,
|
9
|
-
set the attributes to what you want, and call url on the instance to get the
|
10
|
-
URL to download the map from. You can also call get_map to actually
|
11
|
-
download the map from Google, return the bytes, and optionally write the
|
12
|
-
image to a file.
|
13
|
-
|
14
|
-
== Examples:
|
15
|
-
|
16
|
-
Get a simple static map centered at Washington, DC, with the default size
|
17
|
-
(500 x 350), zoomed to level 11. image will be the binary data of the map
|
18
|
-
require 'googlestaticmap'
|
19
|
-
map = GoogleStaticMap.new(:zoom => 11, :center => MapLocation.new(:address => "Washington, DC"))
|
20
|
-
image = map.get_map
|
21
|
-
|
22
|
-
Get the URL of the image described in the previous example, so you can insert
|
23
|
-
this URL as the src of an img element on an HTML page
|
24
|
-
require 'googlestaticmap'
|
25
|
-
map = GoogleStaticMap.new(:zoom => 11, :center => MapLocation.new(:address => "Washington, DC"))
|
26
|
-
image_url = map.url(:auto)
|
27
|
-
|
28
|
-
Get a map with blue markers at the White House and the Supreme Court, zoomed
|
29
|
-
the closest that the map can be with both markers visible, at the default
|
30
|
-
size. image will be the binary data of the map
|
31
|
-
require 'googlestaticmap'
|
32
|
-
map = GoogleStaticMap.new
|
33
|
-
map.markers << MapMarker.new(:color => "blue", :location => MapLocation.new(:address => "1600 Pennsylvania Ave., Washington, DC"))
|
34
|
-
map.markers << MapMarker.new(:color => "blue", :location => MapLocation.new(:address => "1 1st Street Northeast, Washington, DC"))
|
35
|
-
image = map.get_map
|
36
|
-
|
37
|
-
Get a GIF satellite map, with a size of 640 x 480, with a
|
38
|
-
semi transparent green box drawn around a set of 4 coordinates, with the box
|
39
|
-
outline solid, centered at the middle of the box, written out to the file
|
40
|
-
map.gif:
|
41
|
-
require 'googlestaticmap'
|
42
|
-
map = GoogleStaticMap.new(:maptype => "satellite", :format => "gif", :width => 640, :height => 480)
|
43
|
-
poly = MapPolygon.new(:color => "0x00FF00FF", :fillcolor => "0x00FF0060")
|
44
|
-
poly.points << MapLocation.new(:latitude => 38.8, :longitude => -77.5)
|
45
|
-
poly.points << MapLocation.new(:latitude => 38.8, :longitude => -76.9)
|
46
|
-
poly.points << MapLocation.new(:latitude => 39.2, :longitude => -76.9)
|
47
|
-
poly.points << MapLocation.new(:latitude => 39.2, :longitude => -77.5)
|
48
|
-
poly.points << MapLocation.new(:latitude => 38.8, :longitude => -77.5)
|
49
|
-
map.paths << poly
|
50
|
-
map.get_map("map.gif")
|
51
|
-
|
52
|
-
If you're working behind a proxy, create the map object this way:
|
53
|
-
map = GoogleStaticMap.new(:proxy_address=>'my.proxy.host', :proxy_port=>8080, :width => 640, :height => 480)
|
54
|
-
|
55
|
-
|
56
|
-
Author:: Brent Sowers (mailto:brent@coordinatecommons.com)
|
57
|
-
License:: You're free to do whatever you want with this
|
58
|
-
|
59
|
-
To post comments about this gem, go to my blog posting at
|
60
|
-
http://www.brentsowers.com/2010/08/gem-for-getting-google-static-maps.html
|