runalyze / static-maps
Library to create static images from various map tile providers.
1.0.0
2024-11-16 07:57 UTC
Requires
- php: >=8.2
- ext-gd: *
- guzzlehttp/guzzle: ^7.0
- intervention/image: ^3.9
- league/flysystem: ^3.12
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- league/flysystem-memory: ^3
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-12-16 08:09:48 UTC
README
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());
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); // ...
License
The MIT License (MIT). Please see License File for more information.