[![Build Status](https://travis-ci.org/karupanerura/Geo-Hex-V3-XS.svg?branch=master)](https://travis-ci.org/karupanerura/Geo-Hex-V3-XS)
# NAME

Geo::Hex::V3::XS - GeoHex implementation with XS. (c-geohex3 Perl5 binding.)

# SYNOPSIS

   use Geo::Hex::V3::XS;

   my $zone = Geo::Hex::V3::XS->new(code => 'XM488276746');

   # or

   my $zone = Geo::Hex::V3::XS->new(lat => 35.579826, lng => 139.654524, level => 9);

   say 'geohex.code:  ', $zone->code;
   say 'geohex.lat:   ', $zone->lat;
   say 'geohex.lng:   ', $zone->lng;
   say 'geohex.level: ', $zone->level;

# DESCRIPTION

Geo::Hex::V3::XS is [GeoHex](http://geohex.net/) implementation.

# FUNCTIONS

- `my $geohex_code = encode_geohex($lat, $lng, $level)`

   Convert location,level to geohex's code.

- `my ($lat, $lng, $code) = decode_geohex($geohex_code)`

   Convert geohex's code to location,level.
   This location is center of geohex.

# METHODS

- `my $zone = Geo::Hex::V3::XS->new(...)`

   Create geohex zone object.

   Arguments can be:

   - `code`

       Create geohex zone object from geohex code.

           use Geo::Hex::V3::XS;

           my $zone = Geo::Hex::V3::XS->new(code => 'XM488548');

   - `lat/lng/level`

       Create geohex zone object from location with level.

           use Geo::Hex::V3::XS;

           my $zone = Geo::Hex::V3::XS->new(
               lat   => 40.5814792855475,
               lng   => 134.296601127877,
               level => 7,
           );

- `$zone->lat`

   Get geohex center location latitude.

- `$zone->lng`

   Get geohex center location longitude.

- `$zone->code`

   Get geohex code.

- `$zone->level`

   Get geohex level. (0-15)

- `$zone->size`

   Get geohex size.

- `my @locations = $zone->polygon()`

   Get vertex locations of a geohex polygon.

# LICENSE

Copyright (C) karupanerura.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

# AUTHOR

karupanerura <[email protected]>