Geo::Coder::GeocodeFarm - Geocode addresses with the GeocodeFarm API
use Geo::Coder::GeocodeFarm;
my $geocoder = Geo::Coder::GeocodeFarm->new( key => '3d517dd448a5ce1c2874637145fed69903bc252a' ); my $result = $geocoder->geocode( location => '530 West Main St Anoka MN 55303' ); printf "%f,%f", $result->{COORDINATES}{latitude}, $result->{COORDINATES}{longitude};
The Geo::Coder::GeocodeFarm module provides an interface to the geocoding functionality of the GeocodeFarm API.
$geocoder = Geo::Coder::GeocodeFarm->new( key => '3d517dd448a5ce1c2874637145fed69903bc252a', url => 'http://www.geocodefarm.com/api/', ua => LWP::UserAgent->new, parser => JSON->new->utf8, raise_failure => 1, );
Creates a new geocoding object. key argument is required.
key
An API key can be obtained at http://geocodefarm.com/dashboard/login/
New account can be registered at http://geocodefarm.com/dashboard/register/free/
$result = $geocoder->geocode( location => $location )
Forward geocoding takes a provided address or location and returns the coordinate set for the requested location as a nested list:
{ ACCOUNT => { api_key => '3d517dd448a5ce1c2874637145fed69903bc252a', email => 'joe.sixpack@example.net', monthly_due => '25.00', name => 'Joe Sixpack', next_due => '20130901', remaining_queries => '24995', usage_limit => '25000', used_today => '5', }, ADDRESS => { accuracy => 'GOOD ACCURACY', address_provided => '530 WEST MAIN ST ANOKA MN 55303', address_returned => '530 WEST MAIN STREET, ANOKA, MN 55303, USA', }, COORDINATES => { latitude => '45.2040305', longitude => '-93.3995728', }, PROVIDER => { import => 'ALREADY STORED', provider => 'LOCAL FARM', }, STATUS => { access => 'KEY_VALID, ACCESS_GRANTED', copyright_logo => 'http://www.geocodefarm.com/assets/img/logo.png', copyright_notice => 'Results Copyright (c) 2013 GeocodeFarm. All Rights Reserved. No unauthorized redistribution without written consent from GeocodeFarm's Owners and Operators.', status => 'SUCCESS', }, }
Slash / is replaced with dash - in location string.
/
-
Method throws an error (or returns failure as nested list if raise_failure argument is false) if the service failed to find coordinates or wrong key was used.
Methods throws an error if there was an other problem.
$result = $geocoder->reverse_geocode( lat => $latitude, lng => $longtitude, )
or
$result = $geocoder->reverse_geocode( latlng => "$latitude,$longtitude", )
Reverse geocoding takes a provided coordinate set and returns the address for the requested coordinates as a nested list:
{ ACCOUNT => { api_key => '3d517dd448a5ce1c2874637145fed69903bc252a', email => 'joe.sixpack@example.net', monthly_due => '25.00', name => 'Joe Sixpack', next_due => '20130901', remaining_queries => '24994', usage_limit => '25000', used_today => '6', }, ADDRESS => { address => '500-534 West Main Street, Anoka, MN 55303, USA', accuracy => 'GOOD ACCURACY', }, COORDINATES => { latitude => '45.204031', longitude => '-93.399573', }, PROVIDER => { import => 'ALREADY STORED', provider => 'LOCAL FARM', }, STATUS => { access => 'KEY_VALID, ACCESS_GRANTED', copyright_logo => 'http://www.geocodefarm.com/assets/img/logo.png', copyright_notice => 'Results Copyright (c) 2013 GeocodeFarm. All Rights Reserved. No unauthorized redistribution without written consent from GeocodeFarm's Owners and Operators.', status => 'SUCCESS', }, }
Method throws an error if there was an other problem.
http://www.geocodefarm.com/
If you find the bug or want to implement new features, please report it at https://github.com/dex4er/perl-Geo-Coder-GeocodeFarm/issues
The code repository is available at http://github.com/dex4er/perl-Geo-Coder-GeocodeFarm
Piotr Roszatycki <dexter@cpan.org>
Copyright (c) 2013 Piotr Roszatycki <dexter@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as perl itself.
See http://dev.perl.org/licenses/artistic.html
To install Geo::Coder::GeocodeFarm, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Geo::Coder::GeocodeFarm
CPAN shell
perl -MCPAN -e shell install Geo::Coder::GeocodeFarm
For more information on module installation, please visit the detailed CPAN module installation guide.