NAME
Geo::OSM::Tiles - Calculate tile numbers for OpenStreetMap
SYNOPSIS
use Geo::OSM::Tiles qw( :all );
$zoom = 13;
$lat = 49.60055;
$lon = 11.01296;
$tilex = lon2tilex($lon, $zoom);
$tiley = lat2tiley($lat, $zoom);
$path = tile2path($tilex, $tiley, $zoom);
$tileurl = "http://tile.openstreetmap.org/$path";
DESCRIPTION
This module provides functions for calculating the path to a map tile at OpenStreetMap out of geographic coordinates. The path of a tile at OSM has the form $zoom/$tilex/$tiley.png
. The numbering scheme is documented in the OSM wiki, see the link below.
lon2tilex($lon, $zoom)
Returns $tilex
for the tile at longitude $lon
and zoom level $zoom
. The longitude must be in the range -180.0 <= $lon < 180.0
. The zoom level must be a non-negative integer.
lat2tiley($lat, $zoom)
Returns $tiley
for the tile at latitude $lat
and zoom level $zoom
. The latitude must be in the range -85.0511 <= $lat <= 85.0511
. The zoom level must be a non-negative integer.
tile2path($tilex, $tiley, $zoom)
Composes the path to the tile at $tilex
, $tiley
, and $zoom
at the OSM server. $tilex
and $tiley
must be integers in the range 0..2**$zoom-1
. The supported range of zoom levels depends on the tile server. The maximum zoom for the Osmarender layer is 17, it is 18 for the Mapnik layer.
checklonrange($lonmin, $lonmax)
Checks whether $lonmin
and $lonmax
are within the allowed range of the longitude argument to lon2tilex
. Returns ($lonmin, $lonmax)
unchanged if they are ok or corrected values if not.
checklatrange($latmin, $latmax)
Checks whether $latmin
and $latmax
are within the allowed range of the latitude argument to lat2tiley
. Returns ($latmin, $latmax)
unchanged if they are ok or corrected values if not.
SEE ALSO
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
AUTHOR
Rolf Krahl <rotkraut@cpan.org>
COPYRIGHT AND LICENCE
Copyright (C) 2008-2010 by Rolf Krahl
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.