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 = new ImageManager(['driver' => 'gd']);
$tileService = new OpenStreetMap();
$tileCache = new FilesystemCache(new Filesystem(new Local(__DIR__.'/cache/tiles')), $imageManager);
$tileProvider = new TileProvider($tileService, $imageManager, $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($font){
$font->file('./resources/font/Roboto-Regular.ttf');
}));
$provider = new Renderer($imageManager);
$image = $provider->renderMap($map);
echo $image->response('png');
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.