Skip to content

Library to create static images from various map tile providers.

License

Notifications You must be signed in to change notification settings

Runalyze/static-maps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7fc722a · Nov 16, 2024

History

15 Commits
Nov 16, 2024
Nov 16, 2024
Oct 4, 2018
Nov 16, 2024
Oct 18, 2021
Oct 18, 2021
Oct 4, 2018
Nov 16, 2024
Nov 16, 2024
Nov 16, 2024

Repository files navigation

StaticMaps

Latest Version on Packagist Software License Total Downloads

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.

Install

Via Composer

$ composer require runalyze/static-maps

Usage

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());

Example for static map

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);

// ...

Example for static map with route

License

The MIT License (MIT). Please see License File for more information.