This gem provides a Ruby wrapper around the Google Places API, using HTTParty. At this moment the gem does not support OAuth authentication and will only work with an API key.
To be able to use this gem, you’ll need a Google Places API key. To request an API key, point your browser to code.google.com/apis/console and follow the instructions there. You’ll find your API key on the *API Access* tab under *Simple API Access*.
To use this gem, install it with gem install google_places
or add it to your Gemfile:
gem 'google_places'
And install it with bundle install
Each of the API methods below returns a GooglePlaces::Spot
or a collection of those. Each of these objects has these attributes:
-
reference: a token to query the Google Places API for more details about the spot
-
vicinity: the street or neighborhood of the spot
-
lat: the latitude of the spot
-
lng: the longitude of the spot
-
name: the name of the spot
-
icon: a URL to the icon of this spot
-
types: array of feature types describing the spot, see list of supported types
-
formatted_phone_number: formatted phone number of the spot (eg (555)555-555)
-
formatted_address: the full address of the spot formatted with commas
-
address_components: the components (eg street address, city, state) of the spot’s address in an array
-
rating: the rating of this spot on Google Places
-
url: the url of this spot on Google Places
First register a new Client:
@client = GooglePlaces::Client.new(API_KEY)
Then retrieve a list of spots:
@client.spots(-33.8670522, 151.1957362)
Search by a specific type:
@client.spots(-33.8670522, 151.1957362, :types => 'restaurant')
Search by multiple types:
@client.spots(-33.8670522, 151.1957362, :types => ['restaurant','food'])
Search by multiple types but exclude one type:
@client.spots(-33.8670522, 151.1957362, :types => ['restaurant','food'], :exclude => 'cafe')
Search by multiple types but exclude multiple types:
@client.spots(-33.8670522, 151.1957362, :types => ['restaurant','food'], :exclude => ['cafe', 'establishment'])
Search by name:
@client.spots(-33.8670522, 151.1957362, :name => 'italian')
Search by name and type:
@client.spots(-33.8670522, 151.1957362, :name => 'italian', :types => 'restaurant')
First register a new Client:
@client = GooglePlaces::Client.new(API_KEY)
Then retrieve the spot:
@client.spot('CmRYAAA...upoTH3g')
You’re very welcome to add functionality to this gem. To do so, follow these steps:
-
Fork the project on Github
-
Clone your own fork on your development machine
-
Install the dependencies with
bundle install
-
Copy
spec/api_key.sample.rb
tospec/api_key.rb
-
Insert your own Google Places API key in
spec/api_key.rb
-
Run the specs with
rspec spec
-
Hackety hack
-
???
-
PROFIT
Feel free to send me a pull request but please make sure your changes are sufficiently covered by RSpec.
Concerning the reference
field, the Google Places API documentation states:
"You can store this token and use it at any time in future to refresh cached data about this Place,
but the same token is not guaranteed to be returned for any given Place across different searches."
Please be aware that the reference
field in spot details may differ from the reference
used to retrieve that spot.