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

Repository files navigation

StaticMaps

Latest Version on Packagist Software License Build Status Coverage Status Quality Score 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 = 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');

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.