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.