NAME

Geo::Yandex - Performs geographical queries using Yandex Maps API

SYNOPSIS

use Geo::Yandex;

# Address to search
my $addr = 'Москва, Красная площадь, 1';

# Personal API key, should be obtained at http://api.yandex.ru/maps/form.xml
my $key = '. . .';

# New geo object, note to use the key
my $geo = new Geo::Yandex($key);

# Search locations with a given address
my @locations = $geo->location(address => $addr);

# Or specify query in more details
my @locations = $geo->location(
    address => $addr,
    results => 3,
    skip    => 2,
    center  => '37.618920,55.756994',
    size    => '0.552069,0.400552'
);    

# Locations are an array of Geo::Yandex::Location elements
for my $item (@locations) {
    say $item->address . ' (' . $item->kind .') ' .
        $item->latitude . ',' . $item->longitude;
}

ABSTRACT

Geo::Yandex is a Perl interface for the part of Yandex Maps API which retrieves geographical data for text query.

DESCRIPTION

Yandex Maps API is a set of tools for working with http://maps.yandex.ru website both with JavaScript queries and HTTP negotiations. Full description of the interface can be found at http://api.yandex.ru/maps/doc/ (in Russian).

All the work is done by an instance of Geo::Yandex class.

new

Creates a new Geo::Yandex object. The only argument, which is required, is a personal key that should be issued by Yandex before using API. To obtain the key you need to fill the form at http://api.yandex.ru/maps/form.xml.

my $geo = new Geo::Yandex($key);

location

Launches search query to Yandex and returns the list of locations which match to the given address (passed in address parameter).

my @locations = $geo->location(address => $addr);

The list returned by this method is combined of elements of the type Geo::Yandex::Location. If no results were found, return is an empty list.

parameters of location method

address

This is the only parameter which is requered for performing the search. It is a text string containing the address of the location being searched. May be in less or more free form.

results

Optional parameter which sets the limit of search. No more results will appear than a number set by this parameter.

skip

Optional parameter to skip several first results. Useful in pair with results parameter for organizing paginated output.

center, size

my @locations = $geo->location(
    address => $addr,
    center  => '37.618920,55.756994',
    size    => '0.552069,0.400552'
);    

These two parameters restrict the search area with a boundary located withing (longitude, latitude) pair set in center. This point will be located in the center of search area. To set width and height of the search block use size parameter. Both parameters are optional. Each should contain a pair of numbers (geographical measure - degree) separated by a comma.

Please note that you should not expect that center and size parameters will bring rigid boundaries of the area; those are just hints for the search engine. Seems to be weird stuff.

AUTHOR

Andrew Shitov, <andy@shitov.ru>

COPYRIGHT AND LICENCE

Geo::Yandex module is a free software. You may redistribute and (or) modify it under the same terms as Perl, whichever version it is.