Project

geogle

0.0
No commit activity in last 3 years
No release in over 3 years
Ruby wrapper for Google MAPS API V3 geocode interface
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
>= 0
>= 0
>= 0

Runtime

 Project Readme

Geogle

Ruby wrapper for the Geocoding and Directions services provided from the Google Maps API.

wercker status Gem Version Code Climate

Installation

Add this line to your application's Gemfile:

gem 'geogle'

And then execute:

$ bundle

Or install it yourself as:

$ gem install geogle

Usage

Geocoding

Google geocoding documentation: https://developers.google.com/maps/documentation/geocoding/

Setting parameters

When creating the Geogle::Geocoder these are the setting parameters:

  • sensor:

    • true
    • false (default)
  • language: ar, eu, bg, bn, ca, cs, da, de, el, en, en-AU, en-GB, es, eu, fa, fi, fil, fr, gl, gu, hi, hr, hu, id, it, iw, ja, kn, ko, lt, lv, ml, mr, nl, no, pl, pt, pt-BR, pt-PT, ro, ru, sk, sl, sr, sv, tl, ta, te, th, tr, uk, vi, zh-CN, zh-TW

  • raw:

    • true: returns the raw json that comes in the body from the response.
    • false (default): returns the object created with auxiliar funtions.
  • client_id (required for business API): ID of the client. It starts with "gme-" prefix.

  • crypto_key (required for business API): Criptographic key.

Here's more information about Google Maps API for Business: https://developers.google.com/maps/documentation/business/webservices

Data model

Both methods return an array of Geogle::Model::Place. Each place is composed by:

  • Coordinates:

    • lat: Float
    • lng: Float
  • Area:

    • northeast: Coordinates
    • southwest: Coordinates
  • Geometry:

    • location: Coordinates
    • location_type: String
    • bounds: Area
    • viewport: Area
  • address:

    • street_number: String
    • street: String
    • locality: String
    • area_level_1: String
    • area_level_1_code: String
    • area_level_2: String
    • area_level_2_code: String
    • country: String
    • country_code: String
    • formatted: String

By address without an account

client = Geogle::Geocoder.new({ sensor: false, language: "es" })
client.address("Blasco Ibañez, Valencia")

By address making use of the components

client = Geogle::Geocoder.new({ sensor: false, language: "es" })
components = { country: 'ES' }
client.address("Blasco Ibañez, Valencia", components)

Available components to be used can be found here: https://developers.google.com/maps/documentation/geocoding/#ComponentFiltering

Reverse geocoding (by latitude and longitude)

Geogle::Geocoder.new.latlng(39.5073225, -0.2914778)

Using a business account

client = Geogle::Geocoder.new({ client_id: "gme-client-id", crypto_key: "crypto-key" })
client.latlng(39.5073225, -0.2914778)

The signature required to do the request will be appended in the URL.

Directions

Google directions documentation: https://developers.google.com/maps/documentation/directions/

Setting parameters

The same as with Geocode.

Options

  • mode: supporterd modes of transport (bicycling|walking|driving).
  • waypoints: specifies an array of waypoints to alter a route by routing it through the specified location.
  • alternatives: if true returns more than one route.
  • avoid:
    • tolls: the route should avoid toll roads/bridges.
    • highways: the route should avoid highways,
  • units:
    • metric: usage of metric system, returning distances in meters and kilometers.
    • imperial: usage of imperial system (British), returning distances in miles and feet.
  • region: the code of the country to search in.

Data model

Return an array of Geogle::Model::Route. Each route is composed by:

  • Time:

    • value: Integer
    • text: String
    • time_zone: String
  • TextValue:

    • value: Integer
    • text: String
  • Leg:

    • steps: Step
    • distance: TextValue
    • duration: TextValue
    • arrival_time: Time
    • departure_time: Time
    • start_address: String
    • end_address: String
    • start_location: Coordinates
    • end_location: Coordinates
  • Route:

    • summary: String
    • legs: Array[Leg]
    • waypoint_order: Array[Integer]
    • bounds: Area
    • copyrights: String
    • warnings: Array[String]
    • helper methods:
      • duration: Total duration of all legs.
      • distance: Total distance of all legs.
      • origin: Name of starting address.
      • destination: Name of destination address.
      • path: Array of geo-location points that represents the entire path of all legs.

Search using address names for origin and destination

options = { region: "de", mode: "driving" }
client = Geogle::Directions.new
client.routes("Berlin", "Munich", options)

Search using geo-locations for origin and destination

client = Geogle::Directions.new
client.routes("39.4699889,-0.3759178", "40.4167158,-3.7037799")

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request