google_maps_service 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dc96e3ee965d73c64abc9bb90649c0d328c6c372
4
- data.tar.gz: f4da7866e12df9d983e8b93e4572f6094dfc42b8
3
+ metadata.gz: fb00f53441211719da0e59680a1186a109615495
4
+ data.tar.gz: 6075646a6a52b3cd64abce441479b1f80e967cbc
5
5
  SHA512:
6
- metadata.gz: 08a82eb2e0d70161128a3045bb329d351ded380709626420c89a99d7b949ba3c5a0eb31d2f17206cc40123f7566a776c57cbd2b86652ef347c3beccb9120008e
7
- data.tar.gz: 6e28ceff3bbada51ae762ea0d1875c644dec83250199e39815a1695cfe1c0cb382f9bcdd7ced9a3b205144eae10b9f20c5015d2bb0fd69c3fdfe3f3d609b66f8
6
+ metadata.gz: a0007fe257d673c7011097aefc8436664e3a450c7cb9a26d772b5ef72b6818ac52342614572fcf014f5f433ee0ef6ee17a7c2fed98b307d685d3b1807ca8662e
7
+ data.tar.gz: 24a6947fc3683cd5e58886376bc293a3c3c395952cb021435e001b2c2c4dab3131cace9191c99b999a353fd391667e92cda0b053b4b2dd06d73125a38790acda
@@ -0,0 +1,11 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --markup-provider=redcarpet
5
+ --markup=markdown
6
+ lib/**/*.rb
7
+ -
8
+ README.md
9
+ CHANGELOG.md
10
+ CODE_OF_CONDUCT.md
11
+ LICENSE
@@ -0,0 +1,34 @@
1
+ # Changelog
2
+
3
+ ## 0.4.0
4
+
5
+ * Use required positional and optional named parameters (_breaking changes_)
6
+ * Documentation with examples
7
+ * Documentation using markdown syntax
8
+ * Use OpenSSL instead Ruby-HMAC to sign url
9
+ * Customizeable HTTP client
10
+ * Fix QPS bug: ensure number of queue items is the given value
11
+
12
+ ## 0.3.0
13
+
14
+ * QPS: Query per second
15
+ * Refactor lib
16
+
17
+ ## 0.2.0
18
+
19
+ * Support Ruby >= 2.0.0
20
+ * Auto-retry connection when the request is failed and possible
21
+ * Restructure test (rspec) directory
22
+ * Refactor lib
23
+
24
+ ## 0.1.0
25
+
26
+ * Initial release.
27
+ * Support Ruby >= 2.2
28
+ * [Google Maps Web Service API](https://developers.google.com/maps/documentation/webservices/) scope:
29
+ - [Directions API](https://developers.google.com/maps/documentation/directions/)
30
+ - [Distance Matrix API](https://developers.google.com/maps/documentation/distancematrix/)
31
+ - [Elevation API](https://developers.google.com/maps/documentation/elevation/)
32
+ - [Geocoding API](https://developers.google.com/maps/documentation/geocoding/)
33
+ - [Time Zone API](https://developers.google.com/maps/documentation/timezone/)
34
+ - [Roads API](https://developers.google.com/maps/documentation/roads/)
data/README.md CHANGED
@@ -1,47 +1,59 @@
1
- # Ruby Client for Google Maps Services
1
+ # Ruby gem for Google Maps APIs
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/google_maps_service.svg)](http://badge.fury.io/rb/google_maps_service) [![Build Status](https://travis-ci.org/edwardsamuel/google-maps-services-ruby.svg?branch=master)](https://travis-ci.org/edwardsamuel/google-maps-services-ruby) [![Dependency Status](https://gemnasium.com/edwardsamuel/google-maps-services-ruby.svg)](https://gemnasium.com/edwardsamuel/google-maps-services-ruby) [![Code Climate](https://codeclimate.com/github/edwardsamuel/google-maps-services-ruby/badges/gpa.svg)](https://codeclimate.com/github/edwardsamuel/google-maps-services-ruby) [![Coverage Status](https://coveralls.io/repos/edwardsamuel/google-maps-services-ruby/badge.svg?branch=master&service=github)](https://coveralls.io/github/edwardsamuel/google-maps-services-ruby?branch=master)
3
+ [![Gem Version](https://badge.fury.io/rb/google_maps_service.svg)](http://badge.fury.io/rb/google_maps_service) [![Build Status](https://travis-ci.org/edwardsamuel/google-maps-services-ruby.svg?branch=master)](https://travis-ci.org/edwardsamuel/google-maps-services-ruby) [![Dependency Status](https://gemnasium.com/edwardsamuel/google-maps-services-ruby.svg)](https://gemnasium.com/edwardsamuel/google-maps-services-ruby) [![Code Climate](https://codeclimate.com/github/edwardsamuel/google-maps-services-ruby/badges/gpa.svg)](https://codeclimate.com/github/edwardsamuel/google-maps-services-ruby) [![Coverage Status](https://coveralls.io/repos/edwardsamuel/google-maps-services-ruby/badge.svg?branch=master&service=github)](https://coveralls.io/github/edwardsamuel/google-maps-services-ruby?branch=master) [![Inch CI](https://inch-ci.org/github/edwardsamuel/google-maps-services-ruby.svg?branch=master)](https://inch-ci.org/github/edwardsamuel/google-maps-services-ruby?branch=master)
4
4
 
5
- *This is porting of [Python Client for Google Maps Services](https://github.com/googlemaps/google-maps-services-python).*
5
+ ![Analytics](https://ga-beacon.appspot.com/UA-66926725-1/google-maps-services-ruby/readme?pixel)
6
+
7
+ *This gem is ported from [Python Client for Google Maps Services](https://github.com/googlemaps/google-maps-services-python).*
6
8
 
7
9
  ## Description
8
10
 
9
11
  Use Ruby? Want to [geocode][Geocoding API] something? Looking for [directions][Directions API]?
10
- Maybe [matrices of directions][Distance Matrix API]? This library brings the [Google Maps API Web
12
+ Maybe [matrices of directions][Distance Matrix API]? This gem brings the [Google Maps API Web
11
13
  Services] to your Ruby application.
12
- ![Analytics](https://ga-beacon.appspot.com/UA-66926725-1/google-maps-services-ruby/readme?pixel)
13
14
 
14
- The Ruby Client for Google Maps Services is a Ruby Client library for the following Google Maps APIs:
15
+ The Ruby gem for Google Maps Web Service APIs is a gem for the following Google Maps APIs:
15
16
 
16
- - [Directions API]
17
- - [Distance Matrix API]
18
- - [Elevation API]
19
- - [Geocoding API]
20
- - [Time Zone API]
21
- - [Roads API]
17
+ - [Google Maps Directions API][Directions API]
18
+ - [Google Maps Distance Matrix API][Distance Matrix API]
19
+ - [Google Maps Elevation API][Elevation API]
20
+ - [Google Maps Geocoding API][Geocoding API]
21
+ - [Google Maps Time Zone API][Time Zone API]
22
+ - [Google Maps Roads API][Roads API]
22
23
 
23
24
  Keep in mind that the same [terms and conditions](https://developers.google.com/maps/terms) apply
24
- to usage of the APIs when they're accessed through this library.
25
+ to usage of the APIs when they're accessed through this gem.
25
26
 
26
- ## Support
27
27
 
28
- This library is community supported. We're comfortable enough with the stability and features of
29
- the library that we want you to build real production applications on it. We will try to support,
30
- through Stack Overflow, the public and protected surface of the library and maintain backwards
31
- compatibility in the future; however, while the library is in version 0.x, we reserve the right
32
- to make backwards-incompatible changes. If we do remove some functionality (typically because
33
- better functionality exists or if the feature proved infeasible), our intention is to deprecate
34
- and give developers a year to update their code.
28
+ ## Features
35
29
 
36
- If you find a bug, or have a feature suggestion, please [log an issue][issues]. If you'd like to
37
- contribute, please read [How to Contribute](#contributing).
30
+ ### Rate Limiting
31
+
32
+ Never sleep between requests again! By default, requests are sent at the expected rate limits for
33
+ each web service, typically 10 queries per second for free users. If you want to speed up or slowdown requests, you can do that too, using `queries_per_second` options while initializing API client.
34
+
35
+ ### Retry on Failure
36
+
37
+ Automatically retry when intermittent failures occur. That is, when any of the retriable 5xx errors
38
+ are returned from the API.
39
+
40
+ ### Keys *and* Client IDs
41
+
42
+ Maps API for Work customers can use their [client ID and secret][clientid] to authenticate. Free
43
+ customers can use their [API key][apikey], too.
44
+
45
+ Note: Currently, [Roads API] does not accept client ID. It requires API key to authenticate the request.
46
+
47
+ ### Ruby Hash/Array as API Result
48
+
49
+ This gem return a Ruby Hash/Array object as the API result. The result format structure is same as in Google Maps API documentation.
38
50
 
39
51
  ## Requirements
40
52
 
41
53
  - Ruby 2.0 or later.
42
- - A Google Maps API key.
54
+ - A Google Maps API credentials (API keys or client IDs)
43
55
 
44
- ### API keys
56
+ ### Obtain API keys
45
57
 
46
58
  Each Google Maps Web Service requires an API key or Client ID. API keys are
47
59
  freely available with a Google Account at https://developers.google.com/console.
@@ -72,58 +84,287 @@ Your API key should be 40 characters long, and begin with `AIza`.
72
84
 
73
85
  ## Installation
74
86
 
75
- $ gem install google_maps_service
87
+ Add this line to your application's Gemfile:
88
+
89
+ gem 'google_maps_service'
90
+
91
+ And then execute:
76
92
 
77
- ## Developer Documentation
93
+ bundle install
78
94
 
79
- View the [reference documentation](http://www.rubydoc.info/gems/google_maps_service)
95
+ Or install it yourself as:
80
96
 
81
- Additional documentation for the included web services is available at
82
- https://developers.google.com/maps/.
97
+ gem install google_maps_service
83
98
 
84
- - [Directions API]
85
- - [Distance Matrix API]
86
- - [Elevation API]
87
- - [Geocoding API]
88
- - [Time Zone API]
89
- - [Roads API]
99
+ In your Ruby code, add this line to load this gem:
100
+
101
+ require 'google_maps_service'
90
102
 
91
103
  ## Usage
92
104
 
93
- This example uses the [Geocoding API].
105
+ Before you request Google Maps API, you must configure the client.
106
+
107
+ You can view the [reference documentation](http://www.rubydoc.info/gems/google_maps_service).
108
+
109
+ ### Configure client
110
+
111
+ ```ruby
112
+ require 'google_maps_service'
113
+
114
+ # Setup API keys
115
+ gmaps = GoogleMapsService::Client.new(key: 'Add your key here')
116
+
117
+ # Setup client IDs
118
+ gmaps = GoogleMapsService::Client.new(
119
+ client_id: 'Add your client id here',
120
+ client_secret: 'Add your client secret here'
121
+ )
122
+
123
+ # More complex setup
124
+ gmaps = GoogleMapsService::Client.new(
125
+ key: 'Add your key here',
126
+ retry_timeout: 20, # Timeout for retrying failed request
127
+ queries_per_second: 10 # Limit total request per second
128
+ )
129
+ ```
130
+ You can also set up the client globally.
131
+
132
+ ```ruby
133
+ require 'google_maps_service'
134
+
135
+ # Setup global parameters
136
+ GoogleMapsService.configure do |config|
137
+ config.key = 'Add your key here'
138
+ config.retry_timeout = 20
139
+ config.queries_per_second = 10
140
+ end
141
+
142
+ # Initialize client using global parameters
143
+ gmaps = GoogleMapsService::Client.new
144
+ ```
145
+
146
+ For more examples and detail (setup **proxy**, **timeout**, **caching**, etc.) while initializing the client, check out [Client documentation](http://www.rubydoc.info/gems/google_maps_service/GoogleMapsService/Apis/Client#initialize-instance_method).
147
+
148
+ ### Latitude/longitude pairs format
149
+
150
+ Some APIs require latitude/longitude pair(s) as their parameter(s). This gem accept various format of latitude/longitude pairs:
151
+
152
+ ```ruby
153
+ # Array
154
+ latlng = [40.714224, -73.961452]
155
+
156
+ # Hash with symbolized keys
157
+ latlng = {lat: 40.714224, lng: -73.961452}
158
+ latlng = {latitude: 40.714224, longitude: -73.961452}
159
+
160
+ # Hash with string keys
161
+ latlng = {'lat' => 40.714224, 'lng' => -73.961452}
162
+ latlng = {'latitude' => 40.714224, 'longitude' => -73.961452}
163
+ ```
164
+
165
+ ### Directions API
166
+
167
+ ```ruby
168
+ # Simple directions
169
+ routes = gmaps.directions(
170
+ '1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA',
171
+ '2400 Amphitheatre Parkway, Mountain View, CA 94043, USA',
172
+ mode: 'walking',
173
+ alternatives: false)
174
+ ```
175
+
176
+ Sample result:
177
+
178
+ ```ruby
179
+ [{
180
+ :bounds=>{
181
+ :northeast=>{:lat=>37.4238004, :lng=>-122.084314},
182
+ :southwest=>{:lat=>37.42277989999999, :lng=>-122.0882019}
183
+ },
184
+ :copyrights=>"Map data ©2015 Google",
185
+ :legs=>[
186
+ {
187
+ :distance=>{:text=>"0.2 mi", :value=>393},
188
+ :duration=>{:text=>"5 mins", :value=>287},
189
+ :end_address=>"2400 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
190
+ :end_location=>{:lat=>37.4238004, :lng=>-122.0882019},
191
+ :start_address=>"1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
192
+ :start_location=>{:lat=>37.42277989999999, :lng=>-122.084314},
193
+ :steps=>[
194
+ {
195
+ :distance=>{:text=>"223 ft", :value=>68},
196
+ :duration=>{:text=>"1 min", :value=>49},
197
+ :end_location=>{:lat=>37.4228653, :lng=>-122.0850785},
198
+ :html_instructions=>"Head <b>west</b>",
199
+ :polyline=>{:points=>"kclcF|qchVEdAGx@ALAJ"},
200
+ :start_location=>{:lat=>37.42277989999999, :lng=>-122.084314},
201
+ :travel_mode=>"WALKING"
202
+ }, {
203
+ :distance=>{:text=>"108 ft", :value=>33},
204
+ :duration=>{:text=>"1 min", :value=>23},
205
+ :end_location=>{:lat=>37.423161, :lng=>-122.0850102},
206
+ :html_instructions=>"Turn <b>right</b> toward <b>Amphitheatre Pkwy</b>",
207
+ :maneuver=>"turn-right",
208
+ :polyline=>{:points=>"}clcFvvchVg@IQC"},
209
+ :start_location=>{:lat=>37.4228653, :lng=>-122.0850785},
210
+ :travel_mode=>"WALKING"
211
+ }, {
212
+ :distance=>{:text=>"407 ft", :value=>124},
213
+ :duration=>{:text=>"2 mins", :value=>90},
214
+ :end_location=>{:lat=>37.423396, :lng=>-122.0863768},
215
+ :html_instructions=>"Turn <b>left</b> onto <b>Amphitheatre Pkwy</b>",
216
+ :maneuver=>"turn-left",
217
+ :polyline=>{:points=>"welcFhvchVEf@Eb@C\\EZGp@Il@CRAJAJ"},
218
+ :start_location=>{:lat=>37.423161, :lng=>-122.0850102},
219
+ :travel_mode=>"WALKING"
220
+ }, {
221
+ :distance=>{:text=>"0.1 mi", :value=>168},
222
+ :duration=>{:text=>"2 mins", :value=>125},
223
+ :end_location=>{:lat=>37.4238004, :lng=>-122.0882019},
224
+ :html_instructions=>
225
+ "Slight <b>right</b> to stay on <b>Amphitheatre Pkwy</b><div style=\"font-size:0.9em\">Destination will be on the right</div>",
226
+ :maneuver=>"turn-slight-right",
227
+ :polyline=>{:points=>"gglcFz~chVGJADAD?DIh@MhAWhBOxACT"},
228
+ :start_location=>{:lat=>37.423396, :lng=>-122.0863768},
229
+ :travel_mode=>"WALKING"
230
+ }
231
+ ],
232
+ :via_waypoint=>[]
233
+ }
234
+ ],
235
+ :overview_polyline=>{:points=>"kclcF|qchVQxCy@MKjA[xCE^IVMz@y@bH"},
236
+ :summary=>"Amphitheatre Pkwy",
237
+ :warnings=>["Walking directions are in beta. Use caution – This route may be missing sidewalks or pedestrian paths."],
238
+ :waypoint_order=>[]
239
+ }]
240
+ ```
241
+
242
+ For more usage examples and result format, check out [gem documentation](http://www.rubydoc.info/gems/google_maps_service/GoogleMapsService/Apis/Directions), [test script](https://github.com/edwardsamuel/google-maps-services-ruby/tree/master/spec/google_maps_service/apis/directions_spec.rb), and [Google Maps Directions API documentation][Directions API].
243
+
244
+ ### Distance Matrix API
245
+
246
+ ```ruby
247
+ # Multiple parameters distance matrix
248
+ origins = ["Bobcaygeon ON", [41.43206, -81.38992]]
249
+ destinations = [[43.012486, -83.6964149], {lat: 42.8863855, lng: -78.8781627}]
250
+ matrix = gmaps.distance_matrix(origins, destinations,
251
+ mode: 'driving',
252
+ language: 'en-AU',
253
+ avoid: 'tolls',
254
+ units: 'imperial')
255
+ ```
256
+
257
+ For more usage examples and result format, check out [gem documentation](http://www.rubydoc.info/gems/google_maps_service/GoogleMapsService/Apis/DistanceMatrix), [test script](https://github.com/edwardsamuel/google-maps-services-ruby/tree/master/spec/google_maps_service/apis/distance_matrix_spec.rb), and [Google Maps Distance Matrix API documentation][Distance Matrix API].
258
+
259
+ ### Elevation API
94
260
 
95
261
  ```ruby
96
- gmaps = GoogleMapsService::Client.new(key: 'Add Your Key here')
262
+ # Elevation of some locations
263
+ locations = [[40.714728, -73.998672], [-34.397, 150.644]]
264
+ results = gmaps.elevation(locations)
265
+
266
+ # Elevation along path
267
+ locations = [[40.714728, -73.998672], [-34.397, 150.644]]
268
+ results = gmaps.elevation_along_path(locations, 5)
269
+ ```
270
+
271
+ For more usage examples and result format, check out [gem documentation](http://www.rubydoc.info/gems/google_maps_service/GoogleMapsService/Apis/Elevation), [test script](https://github.com/edwardsamuel/google-maps-services-ruby/tree/master/spec/google_maps_service/apis/elevation_spec.rb), and [Google Maps Elevation API documentation][Elevation API].
97
272
 
98
- # Geocoding and address
99
- geocode_result = gmaps.geocode(address: '1600 Amphitheatre Parkway, Mountain View, CA')
273
+ ### Geocoding API
274
+
275
+ ```ruby
276
+ # Geocoding an address
277
+ results = gmaps.geocode('1600 Amphitheatre Parkway, Mountain View, CA')
100
278
 
101
279
  # Look up an address with reverse geocoding
102
- reverse_geocode_result = gmaps.reverse_geocode(latlng: [40.714224, -73.961452])
103
-
104
- # Request directions via public transit
105
- now = Time.now
106
- directions_result = gmaps.directions(origin: "Sydney Town Hall",
107
- destination: "Parramatta, NSW",
108
- mode: "transit",
109
- departure_time: now)
280
+ results = gmaps.reverse_geocode([40.714224, -73.961452])
110
281
  ```
111
282
 
112
- For more usage examples, check out [the tests](spec/).
283
+ For more usage examples and result format, check out [gem documentation](http://www.rubydoc.info/gems/google_maps_service/GoogleMapsService/Apis/Geocoding), [test script](https://github.com/edwardsamuel/google-maps-services-ruby/tree/master/spec/google_maps_service/apis/geocoding_spec.rb), and [Google Maps Geocoding API documentation][Geocoding API].
113
284
 
114
- ## Contributing
285
+ ### Roads API
286
+
287
+ ```ruby
288
+ # Snap to roads
289
+ path = [
290
+ [-33.8671, 151.20714],
291
+ [-33.86708, 151.20683000000002],
292
+ [-33.867070000000005, 151.20674000000002],
293
+ [-33.86703, 151.20625]
294
+ ]
295
+ results = gmaps.snap_to_roads(path, interpolate: true)
296
+
297
+ # Snapped speed limits
298
+ path = [
299
+ [-33.8671, 151.20714],
300
+ [-33.86708, 151.20683000000002],
301
+ [-33.867070000000005, 151.20674000000002],
302
+ [-33.86703, 151.20625]
303
+ ]
304
+ results = gmaps.snapped_speed_limits(path)
305
+
306
+ # Speed limits
307
+ place_ids = [
308
+ 'ChIJ0wawjUCuEmsRgfqC5Wd9ARM',
309
+ 'ChIJ6cs2kkCuEmsRUfqC5Wd9ARM'
310
+ ]
311
+ results = gmaps.speed_limits(place_ids)
312
+ ```
313
+
314
+ For more usage examples and result format, check out [gem documentation](http://www.rubydoc.info/gems/google_maps_service/GoogleMapsService/Apis/Roads), [test script](https://github.com/edwardsamuel/google-maps-services-ruby/tree/master/spec/google_maps_service/apis/roads_spec.rb), and [Google Maps Roads API documentation][Roads API].
315
+
316
+ ### Time Zone API
115
317
 
116
- 1. Fork it ( https://github.com/edwardsamuel/google-maps-services-ruby/fork )
117
- 2. Create your feature branch (`git checkout -b my-new-feature`)
118
- 3. Commit your changes (`git commit -am 'Add some feature'`)
119
- 4. Push to the branch (`git push origin my-new-feature`)
120
- 5. Create a new Pull Request
318
+ ```ruby
319
+ # Current time zone
320
+ timezone = gmaps.timezone([39.603481, -119.682251])
321
+
322
+ # Time zone at certain time
323
+ timezone = gmaps.timezone([39.603481, -119.682251], timestamp: Time.at(1608))
324
+ ```
325
+
326
+ For more usage examples and result format, check out [gem documentation](http://www.rubydoc.info/gems/google_maps_service/GoogleMapsService/Apis/TimeZone), [test script](https://github.com/edwardsamuel/google-maps-services-ruby/tree/master/spec/google_maps_service/apis/time_zone_spec.rb), and [Google Maps Time Zone API documentation][Time Zone API].
327
+
328
+ ### Polyline encoder/decoder
329
+
330
+ [Google Encoded Polyline] is a lossy compression algorithm that allows you to store a series of coordinates as a single string. This format is used in some APIs:
331
+
332
+ - [Directions API] encodes the result path.
333
+ - [Elevation API] also accepts the encoded polyline as request parameter.
334
+
335
+ To handle Google Encoded Polyline, this gem provides encoder/decoder:
336
+
337
+ ```ruby
338
+ require 'google_maps_service/polyline' # Or, require 'google_maps_service' is enough
121
339
 
340
+ # Decode polyline
341
+ encoded_path = '_p~iF~ps|U_ulLnnqC_mqNvxq`@'
342
+ path = GoogleMapsService::Polyline.decode(encoded_path)
343
+ #=> [{:lat=>38.5, :lng=>-120.2}, {:lat=>40.7, :lng=>-120.95}, {:lat=>43.252, :lng=>-126.45300000000002}]
344
+
345
+ # Encode polyline
346
+ path = [[38.5, -120.2], [40.7, -120.95], [43.252, -126.453]]
347
+ encoded_path = GoogleMapsService::Polyline.encode(path)
348
+ #=> "_p~iF~ps|U_ulLnnqC_mqNvxq`@"
349
+ ```
350
+
351
+ ## Issues and feature suggestions
352
+
353
+ If you find a bug, or have a feature suggestion, please [log an issue][issues]. If you'd like to
354
+ contribute, please read [How to Contribute](#contributing).
355
+
356
+ ## Contributing
357
+
358
+ 1. Fork it (https://github.com/edwardsamuel/google-maps-services-ruby/fork).
359
+ 2. Create your feature branch (`git checkout -b my-new-feature`).
360
+ 3. Commit your changes (`git commit -am 'Add some feature'`).
361
+ 4. Push to the branch (`git push origin my-new-feature`).
362
+ 5. Create a new Pull Request.
122
363
 
123
364
  [apikey]: https://developers.google.com/maps/faq#keysystem
124
365
  [clientid]: https://developers.google.com/maps/documentation/business/webservices/auth
125
366
 
126
- [Google Maps API Web Services]: https://developers.google.com/maps/documentation/webservices/
367
+ [Google Maps API Web Services]: https://developers.google.com/maps/web-services/overview/
127
368
  [Directions API]: https://developers.google.com/maps/documentation/directions/
128
369
  [Distance Matrix API]: https://developers.google.com/maps/documentation/distancematrix/
129
370
  [Elevation API]: https://developers.google.com/maps/documentation/elevation/
@@ -131,4 +372,6 @@ For more usage examples, check out [the tests](spec/).
131
372
  [Time Zone API]: https://developers.google.com/maps/documentation/timezone/
132
373
  [Roads API]: https://developers.google.com/maps/documentation/roads/
133
374
 
375
+ [Google Encoded Polyline]: https://developers.google.com/maps/documentation/utilities/polylinealgorithm
376
+
134
377
  [issues]: https://github.com/edwardsamuel/google-maps-services-ruby/issues