Library to create static images from various map tile providers. StaticMaps will fetch map tiles from a specified tile provider and combine them to a static image of specified size for any bounding box.
StaticMaps requires Intervention Image for drawing and League\Flysystem for tile caching.
Via Composer
$ composer require runalyze/static-maps
For a full list of required use statements, see example-1.php:
$imageManager = ImageManager::gd();
$tileService = new OpenStreetMapDe();
$tileCache = new FilesystemCache(new Filesystem(new LocalFilesystemAdapter(__DIR__.'/cache/tiles')), $imageManager);
$tileProvider = new TileProvider($tileService, $imageManager, new \GuzzleHttp\Client(), $tileCache);
$map = new Map(new Viewport(500, 350, new BoundingBox(53.40, 53.75, 9.90, 10.10), $tileService));
$map->addFeature(new TileMap($tileProvider));
$map->addFeature(new CopyrightNotice($tileService->getAttributionText(), function (\Intervention\Image\Typography\FontFactory $font) {
$font->file('./resources/font/Roboto-Regular.ttf');
}));
$provider = new Renderer($imageManager);
$image = $provider->renderMap($map);
file_put_contents('example-1.png', $image->toPng());
It's also possible to use a complete route as base for the image, see example-2.php:
$route = new Route([[53.57532, 10.01534], [52.520008, 13.404954], [48.13743, 11.57549]], '#ff5500', 5);
$map = new Map(new Viewport(300, 200, $route->getBoundingBox(), $tileService));
$map->addFeature(new TileMap($tileProvider);
$map->addFeature($route);
// ...
The MIT License (MIT). Please see License File for more information.