NAME
Geo::Coder::Googlev3 - Google Maps v3 Geocoding API
SYNOPSIS
use Geo::Coder::Googlev3;
my $geocoder = Geo::Coder::Googlev3->new;
my $location = $geocoder->geocode(location => 'Brandenburger Tor, Berlin');
my @locations = $geocoder->geocode(location => 'Berliner Straße, Berlin, Germany');
DESCRIPTION
Use this module just like Geo::Coder::Google. Note that no apikey
is used in Google's v3 API, and the returned data structure differs.
Please check also https://developers.google.com/maps/documentation/geocoding/ for more information about Google's Geocoding API and especially usage limits.
CONSTRUCTOR
- new
-
$geocoder = Geo::Coder::Googlev3->new; $geocoder = Geo::Coder::Googlev3->new(language => 'de', gl => 'es');
Creates a new geocoding object.
The
ua
parameter may be supplied to override the default LWP::UserAgent object. The defaultLWP::UserAgent
object sets thetimeout
to 15 seconds and enables theenv_proxy
option.The Geo::Coder::Google's
oe
parameter is not supported.The parameters
region
,language
,bounds
, andkey
are also accepted. Thebounds
parameter should be in the form:[{lat => ..., lng => ...}, {lat => ..., lng => ...}]
The parameter
sensor
should be set to the stringtrue
if the geocoding request comes from a device with a location sensor (see https://developers.google.com/maps/documentation/geocoding/#GeocodingRequests). There's no default.By default queries are done using
http
. By setting theuse_https
parameter to a true valuehttps
is used.
METHODS
- geocode
-
$location = $geocoder->geocode(location => $location); @locations = $geocoder->geocode(location => $location);
Queries $location to Google Maps geocoding API. In scalar context it returns a hash reference of the first (best matching?) location. In list context it returns a list of such hash references.
The returned data structure looks like this:
{ "formatted_address" => "Brandenburger Tor, Pariser Platz 7, 10117 Berlin, Germany", "types" => [ "point_of_interest", "establishment" ], "address_components" => [ { "types" => [ "point_of_interest", "establishment" ], "short_name" => "Brandenburger Tor", "long_name" => "Brandenburger Tor" }, { "types" => [ "street_number" ], "short_name" => 7, "long_name" => 7 }, { "types" => [ "route" ], "short_name" => "Pariser Platz", "long_name" => "Pariser Platz" }, { "types" => [ "sublocality", "political" ], "short_name" => "Mitte", "long_name" => "Mitte" }, { "types" => [ "locality", "political" ], "short_name" => "Berlin", "long_name" => "Berlin" }, { "types" => [ "administrative_area_level_2", "political" ], "short_name" => "Berlin", "long_name" => "Berlin" }, { "types" => [ "administrative_area_level_1", "political" ], "short_name" => "Berlin", "long_name" => "Berlin" }, { "types" => [ "country", "political" ], "short_name" => "DE", "long_name" => "Germany" }, { "types" => [ "postal_code" ], "short_name" => 10117, "long_name" => 10117 } ], "geometry" => { "viewport" => { "southwest" => { "lat" => "52.5094785", "lng" => "13.3617711" }, "northeast" => { "lat" => "52.5230586", "lng" => "13.3937859" } }, "location" => { "lat" => "52.5162691", "lng" => "13.3777785" }, "location_type" => "APPROXIMATE" } };
The raw option may be set to a true value to get the uninterpreted, raw result from the API. Just the JSON data will be translated into a perl hash.
$raw_result = $geocoder->geocode(location => $location, raw => 1);
- region
-
Accessor for the
region
parameter. The value should be a country code ("es", "dk", "us", etc). Use this to tell the webservice to prefer matches from that region. See the Google documentation for more information. - language
-
Accessor for the
language
parameter. - bounds
-
Accessor for the
bounds
parameter. - sensor
-
Accessor for the
sensor
parameter.
AUTHOR
Slaven Rezic <srezic@cpan.org>
This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself.