.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Geo::Coder::Googlev3 3pm" .TH Geo::Coder::Googlev3 3pm "2022-12-12" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Geo::Coder::Googlev3 \- Google Maps v3 Geocoding API .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Geo::Coder::Googlev3; \& \& my $geocoder = Geo::Coder::Googlev3\->new; \& my $location = $geocoder\->geocode(location => \*(AqBrandenburger Tor, Berlin\*(Aq); \& my @locations = $geocoder\->geocode(location => \*(AqBerliner Straße, Berlin, Germany\*(Aq); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Use this module just like Geo::Coder::Google. Note that no \&\f(CW\*(C`apikey\*(C'\fR is used in Google's v3 \s-1API,\s0 and the returned data structure differs. .PP Please check also for more information about Google's Geocoding \s-1API\s0 and especially usage limits. .SS "\s-1CONSTRUCTOR\s0" .IX Subsection "CONSTRUCTOR" .IP "new" 4 .IX Item "new" .Vb 2 \& $geocoder = Geo::Coder::Googlev3\->new; \& $geocoder = Geo::Coder::Googlev3\->new(language => \*(Aqde\*(Aq, gl => \*(Aqes\*(Aq); .Ve .Sp Creates a new geocoding object. .Sp The \f(CW\*(C`ua\*(C'\fR parameter may be supplied to override the default LWP::UserAgent object. The default \f(CW\*(C`LWP::UserAgent\*(C'\fR object sets the \f(CW\*(C`timeout\*(C'\fR to 15 seconds and enables the \f(CW\*(C`env_proxy\*(C'\fR option. .Sp The Geo::Coder::Google's \f(CW\*(C`oe\*(C'\fR parameter is not supported. .Sp The parameters \f(CW\*(C`region\*(C'\fR, \f(CW\*(C`language\*(C'\fR, \f(CW\*(C`bounds\*(C'\fR, and \f(CW\*(C`key\*(C'\fR are also accepted. The \f(CW\*(C`bounds\*(C'\fR parameter should be in the form: .Sp .Vb 1 \& [{lat => ..., lng => ...}, {lat => ..., lng => ...}] .Ve .Sp The parameter \f(CW\*(C`sensor\*(C'\fR should be set to the string \f(CW\*(C`true\*(C'\fR if the geocoding request comes from a device with a location sensor (see ). There's no default. .Sp By default queries are done using \f(CW\*(C`http\*(C'\fR. By setting the \f(CW\*(C`use_https\*(C'\fR parameter to a true value \f(CW\*(C`https\*(C'\fR is used. .SS "\s-1METHODS\s0" .IX Subsection "METHODS" .IP "geocode" 4 .IX Item "geocode" .Vb 2 \& $location = $geocoder\->geocode(location => $location); \& @locations = $geocoder\->geocode(location => $location); .Ve .Sp Queries \fI\f(CI$location\fI\fR to Google Maps geocoding \s-1API.\s0 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. .Sp The returned data structure looks like this: .Sp .Vb 10 \& { \& "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" \& } \& }; .Ve .Sp The \fBraw\fR option may be set to a true value to get the uninterpreted, raw result from the \s-1API.\s0 Just the \s-1JSON\s0 data will be translated into a perl hash. .Sp .Vb 1 \& $raw_result = $geocoder\->geocode(location => $location, raw => 1); .Ve .IP "region" 4 .IX Item "region" Accessor for the \f(CW\*(C`region\*(C'\fR parameter. The value should be a country code (\*(L"es\*(R", \*(L"dk\*(R", \*(L"us\*(R", etc). Use this to tell the webservice to prefer matches from that region. See the Google documentation for more information. .IP "language" 4 .IX Item "language" Accessor for the \f(CW\*(C`language\*(C'\fR parameter. .IP "bounds" 4 .IX Item "bounds" Accessor for the \f(CW\*(C`bounds\*(C'\fR parameter. .IP "sensor" 4 .IX Item "sensor" Accessor for the \f(CW\*(C`sensor\*(C'\fR parameter. .SH "AUTHOR" .IX Header "AUTHOR" Slaven Rezic .PP This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .SH "SEE ALSO" .IX Header "SEE ALSO" Geo::Coder::Google, Geo::Coder::Many.