This library helps to convert OpenStreetMap (OSM) map tile numbers to geographical coordinates and vice versa.
Using Composer, add it to your composer.json by running:
composer require ministryofweb/php-osm-tilesThe PHP OSM Tiles library requires PHP >= 8.1.
If support for older PHP versions is needed, the PHP OSM Tiles library can be installed at version 2.0 (PHP 7.3, PHP 7.4 and PHP 8.0), 1.0 (PHP 7.1 and PHP 7.2) or version 0.1.0 (PHP 7.0).
<?php
use MinistryOfWeb\OsmTiles\Converter;
use MinistryOfWeb\OsmTiles\LatLng;
$converter = new Converter();
$point = new LatLng(52.5, 13.4);
$zoom = 13;
$tile = $converter->toTile($point, $zoom);
printf('/tiles/%d/%d/%d.png', $zoom, $tile->x, $tile->y);The code above produces the output below:
/tiles/13/4400/2687.png
<?php
use MinistryOfWeb\OsmTiles\Converter;
use MinistryOfWeb\OsmTiles\Tile;
$converter = new Converter();
$tile = new Tile(4400, 2687, 13);
$point = $converter->toLatLng($tile);
printf('%.5f, %.5f', $point->lat, $point->lat);The code above produces the output below:
52.50953, 13.35938
It's possible to get the coordinates for the Tiles north-western, north-eastern, south-eastern and south-western nodes:
<?php
use MinistryOfWeb\OsmTiles\LatLng;
use MinistryOfWeb\OsmTiles\Tile;
use MinistryOfWeb\OsmTiles\TileBounds;
$tile = Tile::fromLocation(new LatLng(52.5, 13.5));
echo 'South-eastern point for tile is located at: ' . TileBounds::getSouthEast($tile)->lat . ', ' . TileBounds::getSouthEast($tile)->lng . PHP_EOL;The code above produces the output below:
South-eastern point for tile is located at: 52.496159531097, 13.51318359375
make testor
./vendor/bin/phpunitmake ci