dantsu/php-osm-static-api

PHP库,轻松从OpenStreetMap(OSM)获取静态图像,添加标记并绘制线条。

0.6.4 2023-08-06 07:17 UTC

This package is auto-updated.

Last update: 2024-09-07 10:26:04 UTC


README

Packagist Latest Stable Version GitHub license

PHP OpenStreetMap 静态API

PHP库,轻松从OpenStreetMap获取带有标记、线条、圆和多边形的静态图像。

本项目使用OpenStreetMap基金会的瓦片服务器,该服务器完全运行在捐赠资源上,更多详细信息请参阅瓦片使用政策

✨ 支持

⭐ 星标此仓库以支持此项目。您将通过增加此库的可见性做出贡献 :)

安装

使用composer轻松安装此库

composer require dantsu/php-osm-static-api

如何使用

使用标记和多边形生成OpenStreetMap静态图像

use \DantSu\OpenStreetMapStaticAPI\OpenStreetMap;
use \DantSu\OpenStreetMapStaticAPI\LatLng;
use \DantSu\OpenStreetMapStaticAPI\Polygon;
use \DantSu\OpenStreetMapStaticAPI\Markers;

\header('Content-type: image/png');
(new OpenStreetMap(new LatLng(44.351933, 2.568113), 17, 600, 400))
    ->addMarkers(
        (new Markers(__DIR__ . '/resources/marker.png'))
            ->setAnchor(Markers::ANCHOR_CENTER, Markers::ANCHOR_BOTTOM)
            ->addMarker(new LatLng(44.351933, 2.568113))
            ->addMarker(new LatLng(44.351510, 2.570020))
            ->addMarker(new LatLng(44.351873, 2.566250))
    )
    ->addDraw(
        (new Polygon('FF0000', 2, 'FF0000DD'))
            ->addPoint(new LatLng(44.351172, 2.571092))
            ->addPoint(new LatLng(44.352097, 2.570045))
            ->addPoint(new LatLng(44.352665, 2.568107))
            ->addPoint(new LatLng(44.352887, 2.566503))
            ->addPoint(new LatLng(44.352806, 2.565972))
            ->addPoint(new LatLng(44.351517, 2.565672))
    )
    ->getImage()
    ->displayPNG();

Exported OpenStreetMap image

对齐和缩放地图以适应绘制和标记

  • ->fitToDraws(int $padding = 0)
  • ->fitToMarkers(int $padding = 0)
  • ->fitToDrawsAndMarkers(int $padding = 0)
  • ->fitToPoints(LatLng[] $points, int $padding = 0)

$padding设置地图边界的填充量,在设置视图以适应边界时不应计算在内。这可以是正数或负数,具体取决于您的需求。

use \DantSu\OpenStreetMapStaticAPI\OpenStreetMap;
use \DantSu\OpenStreetMapStaticAPI\LatLng;
use \DantSu\OpenStreetMapStaticAPI\Polygon;
use \DantSu\OpenStreetMapStaticAPI\Markers;

\header('Content-type: image/png');
(new OpenStreetMap(new LatLng(0, 0), 0, 600, 400))
    ->addMarkers(
        (new Markers(__DIR__ . '/resources/marker.png'))
            ->setAnchor(Markers::ANCHOR_CENTER, Markers::ANCHOR_BOTTOM)
            ->addMarker(new LatLng(44.351933, 2.568113))
            ->addMarker(new LatLng(44.351510, 2.570020))
            ->addMarker(new LatLng(44.351873, 2.566250))
    )
    ->addDraw(
        (new Polygon('FF0000', 2, 'FF0000DD'))
            ->addPoint(new LatLng(44.351172, 2.571092))
            ->addPoint(new LatLng(44.352097, 2.570045))
            ->addPoint(new LatLng(44.352665, 2.568107))
            ->addPoint(new LatLng(44.352887, 2.566503))
            ->addPoint(new LatLng(44.352806, 2.565972))
            ->addPoint(new LatLng(44.351517, 2.565672))
    )
    ->fitToDraws(10)
    ->getImage()
    ->displayPNG();

文档

贡献

请在此仓库上进行分叉并使用拉取请求进行贡献。

任何贡献,无论大小,主要功能、错误修复都受到欢迎并受到赞赏,但将进行彻底审查。