NAME

Google::GeoCoder::Smart - Simple Google Geocoding API client

SYNOPSIS

use Google::GeoCoder::Smart;

my $geo = Google::GeoCoder::Smart->new(
  key => $ENV{GOOGLE_MAPS_API_KEY},
);

my $response = $geo->geocode_addr({
  address => '1600 Amphitheatre Parkway',
  city    => 'Mountain View',
  state   => 'CA',
  zip     => '94043',
});

die "Error: $response->{status}" if $response->{status} ne 'OK';

my $best_match = $response->{results}[0];
my $lat = $best_match->{geometry}{location}{lat};
my $lng = $best_match->{geometry}{location}{lng};

DESCRIPTION

This module provides a lightweight wrapper around the Google Geocoding API v3 endpoint:

https://maps.googleapis.com/maps/api/geocode/json

It supports both structured addresses and place IDs, and returns decoded API payloads with rawJSON attached for debugging.

WHAT THIS MODULE DOES

  • Sends geocoding requests to https://maps.googleapis.com/maps/api/geocode/json.

  • Supports structured address parts, place_id, and optional language, region, bounds, and components.

  • Returns decoded API payloads with rawJSON attached for debugging.

INSTALLATION

perl Makefile.PL
make
make test
make install

DEPENDENCIES

Runtime dependencies are declared in Makefile.PL:

  • HTTP::Tiny

  • JSON::PP

  • URI::Escape

TESTING

Run tests with:

make test

METHODS

new

my $geo = Google::GeoCoder::Smart->new(
  key    => 'your-api-key',
  host   => 'maps.googleapis.com', # optional
  scheme => 'https',               # optional
  timeout => 10,                   # optional
);

geocode_addr

my $response = $geo->geocode_addr({
  address   => '1600 Amphitheatre Parkway',
  city      => 'Mountain View',
  state     => 'CA',
  zip       => '94043',
  language  => 'en',
  region    => 'us',
  place_id  => 'ChIJ2eUgeAK6j4ARbn5u_wAGqWA',
  components => {
    country => 'US',
  },
});

Returns a hashref mirroring Google API JSON.

geocode

Deprecated compatibility wrapper for legacy return shape:

my ($count, $status, @results_and_raw) = $geo->geocode(...);

AUTHOR

TTG, ttg@cpan.org

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.