ministryofweb/php-osm-tiles

一个将地图瓦片编号转换为坐标以及反之的库。

3.0.0 2023-12-04 14:14 UTC

This package is auto-updated.

Last update: 2024-09-04 15:57:06 UTC


README

这个库帮助将OpenStreetMap (OSM) 地图瓦片编号转换为地理坐标,反之亦然。

PHP OSM Tiles Tests

安装

使用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

OpenStreetMap 地图瓦片名称文档