ministryofweb / php-osm-tiles
一个将地图瓦片编号转换为坐标以及反之的库。
3.0.0
2023-12-04 14:14 UTC
Requires
- php: ^8.1
Requires (Dev)
- ergebnis/composer-normalize: ^2.13
- friendsofphp/php-cs-fixer: ^2.18
- php-parallel-lint/php-parallel-lint: ^1.2
- phpmd/phpmd: ^2.9
- phpstan/phpstan: ^0.12.81
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.7
- vimeo/psalm: ^5.0
README
这个库帮助将OpenStreetMap (OSM) 地图瓦片编号转换为地理坐标,反之亦然。
安装
使用Composer,只需运行以下命令将其添加到您的 composer.json
中:
composer require ministryofweb/php-osm-tiles
兼容性
PHP OSM Tiles 库需要 PHP >= 8.1。
如果需要支持旧版本的PHP,PHP OSM Tiles 库可以安装到版本 2.0(PHP 7.3、PHP 7.4 和 PHP 8.0)、1.0(PHP 7.1 和 PHP 7.2)或版本 0.1.0(PHP 7.0)。
使用/示例
从地理坐标转换为地图瓦片编号
<?php use MinistryOfWeb\OsmTiles\Converter; use MinistryOfWeb\OsmTiles\LatLng; $converter = new Converter(); $point = new LatLng(52.5, 13.4); $zoom = 13; $tile = $converter->toTile($point, $zoom); printf('/tiles/%d/%d/%d.png', $zoom, $tile->x, $tile->y);
上面的代码产生以下输出
/tiles/13/4400/2687.png
从地图瓦片编号转换为地理坐标
<?php use MinistryOfWeb\OsmTiles\Converter; use MinistryOfWeb\OsmTiles\Tile; $converter = new Converter(); $tile = new Tile(4400, 2687, 13); $point = $converter->toLatLng($tile); printf('%.5f, %.5f', $point->lat, $point->lat);
上面的代码产生以下输出
52.50953, 13.35938
获取瓦片的边界
可以获取瓦片西北、东北、东南和西南节点的坐标
<?php use MinistryOfWeb\OsmTiles\LatLng; use MinistryOfWeb\OsmTiles\Tile; use MinistryOfWeb\OsmTiles\TileBounds; $tile = Tile::fromLocation(new LatLng(52.5, 13.5)); echo 'South-eastern point for tile is located at: ' . TileBounds::getSouthEast($tile)->lat . ', ' . TileBounds::getSouthEast($tile)->lng . PHP_EOL;
上面的代码产生以下输出
South-eastern point for tile is located at: 52.496159531097, 13.51318359375
运行测试
make test
或
./vendor/bin/phpunit
运行所有CI工具
make ci