cyrildewit / php-maps-urls
生成 Google Maps URLs API 的 URL
Requires
- php: ^7.4|^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-10 15:54:43 UTC
README
此包允许您构建 Google Maps URLs API 的 URL。
以下是一个快速示例
use CyrildeWit\MapsUrls\UrlGenerator; use CyrildeWit\MapsUrls\Actions\SearchAction; use CyrildeWit\MapsUrls\Actions\DirectionsAction; $searchAction = (new SearchAction()) ->setQuery('The Netherlands Amsterdam'); $searchUrl = (new UrlGenerator($searchAction))->generate(); $directionsAction = (new DirectionsAction()) ->setOrigin('The Netherlands Amsterdam') ->setDestination('The Netherlands Utrecht'); $directionsUrl = (new UrlGenerator($directionsAction))->generate();
概述
此包提供了一种方便的方式来生成 Google Maps URLs API 的 URL。每个动作都有自己的抽象,可以用来生成 URL。有关此 API 的更多信息,请参阅 Google Maps URLs API 文档。
文档
目录
入门
要求
此包需要 PHP 7.4+。
版本信息
安装
您可以使用 Composer 安装此包:
composer require cyrildewit/php-maps-urls
使用
生成 URL
CyrildeWit\MapsUrls\UrlGenerator
类负责生成 URL。构造函数接受一个动作类的实例。动作类扩展 CyrildeWit\MapsUrls\Actions\AbstractAction
。
use CyrildeWit\MapsUrls\UrlGenerator; use CyrildeWit\MapsUrls\Actions\SearchAction; $searchAction = (new SearchAction()) ->setQuery('Eindhoven, Nederland'); $searchUrl = (new UrlGenerator($searchAction))->generate();
输出 $searchUrl
: https://www.google.com/maps/search/?api=1&query=Eindhoven,%20Nederland
动作
Google Maps URLs API 允许您生成执行特定操作的 URL。这些动作可以通过使用提供的动作类之一进行配置。
搜索
根据官方文档:“启动一个显示特定地点图标的 Google Map,或执行通用搜索并启动地图以显示结果。”
查询
要设置搜索动作的查询,您可以调用 setQuery(string $query)
方法。
use CyrildeWit\MapsUrls\Actions\SearchAction; $searchAction = (new SearchAction()) ->setQuery('Eindhoven, Nederland');
查询参数也可以由纬度/经度坐标组成。您可以选择自己添加它们或使用 setCoordinates(float $latitude, float $longitude)
方法。
use CyrildeWit\MapsUrls\Actions\SearchAction; $searchAction = (new SearchAction()) ->setQueryCoordinates(47.5951518, -122.3316393);
查询地点 ID
如果您想为搜索动作指定可选的地点 ID,可以使用 setQueryPlaceId(string $placeId)
方法添加。
use CyrildeWit\MapsUrls\Actions\SearchAction; $searchAction = (new SearchAction()) ->setQueryPlaceId('ChIJn8N5VRvZxkcRmLlkgWTSmvM');
魔术构造函数
要使用初始查询参数值实例化一个搜索动作,您可以使用魔术 SearchAction::make(array $options)
方法。
use CyrildeWit\MapsUrls\Actions\SearchAction; $searchAction = SearchAction::make([ 'query' => 'Eindhoven, Nederland', 'query_place_id' => 'ChIJn8N5VRvZxkcRmLlkgWTSmvM', ]);
路线
根据官方文档:“请求路线并将结果启动到 Google Maps 中。”
起点
起点可以使用 setOrigin(string $origin)
方法定义。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; $directionsAction = (new DirectionsAction()) ->setOrigin('Eindhoven, Nederland');
起点地点 ID
起点地点 ID 可以使用 setOriginPlaceId(string $placeId)
方法定义。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; $directionsAction = (new DirectionsAction()) ->setOrigin('Eindhoven, Nederland') ->setOriginPlaceId('ChIJn8N5VRvZxkcRmLlkgWTSmvM');
终点
终点可以使用 setDestination(string $destination)
方法定义。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; $directionsAction = (new DirectionsAction()) ->setDestination('Monnickendam, Nederland');
终点地点 ID
终点地点 ID 可以使用 setDestinationPlaceId(string $placeId)
方法定义。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; $directionsAction = (new DirectionsAction()) ->setDestination('Monnickendam, Nederland') ->setDestinationPlaceId('ChIJTZfQeLgFxkcRQhAYGf9HbrU');
旅行模式
可以使用 setTravelMode(string $travelmode)
方法定义旅行模式。有效的选项有
driving
walking
bicycling
transit
您可以使用 CyrildeWit\MapsUrls\Enums\TravelMode
中定义的常量来引用这些选项。
CyrildeWit\MapsUrls\Enums\TravelMode::DRIVING; CyrildeWit\MapsUrls\Enums\TravelMode::WALKING; CyrildeWit\MapsUrls\Enums\TravelMode::BICYCLING; CyrildeWit\MapsUrls\Enums\TravelMode::TRANSIT;
示例
use CyrildeWit\MapsUrls\Actions\DirectionsAction; use CyrildeWit\MapsUrls\Enums\TravelMode; $directionsAction = (new DirectionsAction()) ->setTravelmode(TravelMode::BICYCLING);
当提供无效的旅行模式时,将抛出 CyrildeWit\MapsUrls\Exceptions\InvalidTravelMode
异常。
方向动作
可以使用 setDirectionAction(string $directionAction)
方法定义方向动作。唯一的有效选项是 navigate
。您可以使用 DirectionAction
类中的 NAVIGATE
常量以方便起见。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; use CyrildeWit\MapsUrls\Enums\DirectionAction; $directionsAction = (new DirectionsAction()) ->setDirectionAction(DirectionAction::NAVIGATE);
当提供无效的方向动作时,将抛出 CyrildeWit\MapsUrls\Exceptions\InvalidDirectionAction
异常。
航点
可以使用方法 setWaypoints(array $waypoints)
定义航点。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; $directionsAction = (new DirectionsAction()) ->setWaypoints([ 'Berlin,Germany', 'Paris,France' ]);
航点位置ID
可以使用方法 setWaypointPlaceIds(array $placeIds)
定义航点位置ID。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; $directionsAction = (new DirectionsAction()) ->setWaypoints([ 'Berlin,Germany', 'Paris,France' ]) ->setWaypointPlaceIds([ 'ChIJAVkDPzdOqEcRcDteW0YgIQQ', 'ChIJD7fiBh9u5kcRYJSMaMOCCwQ' ]);
魔术构造函数
要使用初始查询参数值实例化一个方向动作,可以调用魔法方法 DirectionsAction::make(array $options)
。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; use CyrildeWit\MapsUrls\Enums\TravelMode; use CyrildeWit\MapsUrls\Enums\DirectionAction; $directionsAction = DirectionsAction::make([ 'origin' => 'Eindhoven, Nederland', 'origin_place_id' => 'ChIJn8N5VRvZxkcRmLlkgWTSmvM', 'destination' => 'Monnickendam, Nederland', 'destination_place_id' => 'ChIJTZfQeLgFxkcRQhAYGf9HbrU', 'travelmode' => TravelMode::DRIVING, 'dir_action' => DirectionAction::NAVIGATE, 'waypoints' => [ 'Berlin,Germany', 'Paris,France' ], 'waypoint_place_ids' => [ 'ChIJAVkDPzdOqEcRcDteW0YgIQQ', 'ChIJD7fiBh9u5kcRYJSMaMOCCwQ' ], ]);
显示地图
来自官方文档:“启动没有标记或方向的Google Maps。”
地图动作
查询参数 map_action
是必需的,因此默认添加,值为 map
。
中心点
可以使用方法 setCenter(float $latitude, float $longitude)
通过设置坐标来定义地图的中心点。
use CyrildeWit\MapsUrls\Actions\DisplayMapAction; $displayMapAction = (new DisplayMapAction()) ->setCenter(-33.8569, 151.2152);
缩放级别
可以使用方法 setZoom(int $zoom)
定义地图的缩放级别。
use CyrildeWit\MapsUrls\Actions\DisplayMapAction; $displayMapAction = (new DisplayMapAction()) ->setZoom(10);
基础地图
可以使用方法 setBaseMap(string $baseMap)
定义基础地图。有效选项有
none
traffic
bicycling
您可以使用 CyrildeWit\MapsUrls\Enums\TravelMode
中定义的常量来引用这些选项。
CyrildeWit\MapsUrls\Enums\BaseMap::NONE; CyrildeWit\MapsUrls\Enums\BaseMap::TRAFFIC; CyrildeWit\MapsUrls\Enums\BaseMap::BICYCLING;
示例
use CyrildeWit\MapsUrls\Actions\DisplayMapAction; use CyrildeWit\MapsUrls\Enums\BaseMap; $displayMapAction = (new DisplayMapAction()) ->setBaseMap(BaseMap::TRAFFIC);
当提供了无效的基础地图时,将抛出 CyrildeWit\MapsUrls\Exceptions\InvalidBaseMap
异常。
图层
可以使用方法 setLayer(string $layer)
定义图层。有效选项有
none
transit
traffic
bicycling
这些选项可以使用在 CyrildeWit\MapsUrls\Enums\Layer
中定义的常量进行引用。
CyrildeWit\MapsUrls\Enums\Layer::NONE; CyrildeWit\MapsUrls\Enums\Layer::TRANSIT; CyrildeWit\MapsUrls\Enums\Layer::TRAFFIC; CyrildeWit\MapsUrls\Enums\Layer::BICYCLING;
示例
use CyrildeWit\MapsUrls\Actions\DisplayMapAction; use CyrildeWit\MapsUrls\Enums\Layer; $displayMapAction = (new DisplayMapAction()) ->setLayer(Layer::TRAFFIC);
当提供了无效的图层时,将抛出 CyrildeWit\MapsUrls\Exceptions\InvalidLayer
异常。
魔术构造函数
要使用初始查询参数值实例化一个显示街景全景动作,可以调用魔法方法 DirectionsAction::make(array $options)
。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; use CyrildeWit\MapsUrls\Enums\BaseMap; use CyrildeWit\MapsUrls\Enums\Layer; $displayMapAction = DirectionsAction::make([ 'center' => [-33.8569, 151.2152], 'zoom' => 10, 'basemap' => BaseMap::BICYCLING, 'layer' => Layer::TRANSIT, ]);
显示街景全景
来自官方文档:“启动一个交互式的全景图像。”
地图动作
查询参数 map_action
是必需的,因此默认添加,值为 pano
。
视点
可以使用方法 setViewpoint(float $latitude, float $longitude)
定义视点。
use CyrildeWit\MapsUrls\Actions\DisplayStreetViewPanoramaAction; $displayStreetViewPanoramaAction = (new DisplayStreetViewPanoramaAction()) ->setViewpoint(48.857832, 2.295226);
全景ID
可以使用方法 setPanoramaId(string $id)
定义全景ID。
use CyrildeWit\MapsUrls\Actions\DisplayStreetViewPanoramaAction; $displayStreetViewPanoramaAction = (new DisplayStreetViewPanoramaAction()) ->setPanoramaId('tu510ie_z4ptBZYo2BGEJg');
朝向
可以使用方法 setHeading(int $degrees)
定义朝向。期望的值是从180到360度。
use CyrildeWit\MapsUrls\Actions\DisplayStreetViewPanoramaAction; $displayStreetViewPanoramaAction = (new DisplayStreetViewPanoramaAction()) ->setHeading(120);
当提供了无效的朝向时,将抛出 CyrildeWit\MapsUrls\Exceptions\InvalidHeading
异常。
俯仰角
可以使用方法 setPitch(int $degrees)
定义俯仰角。期望的值是从-90到80度。
use CyrildeWit\MapsUrls\Actions\DisplayStreetViewPanoramaAction; $displayStreetViewPanoramaAction = (new DisplayStreetViewPanoramaAction()) ->setPitch(40);
当提供了无效的俯仰角时,将抛出 CyrildeWit\MapsUrls\Exceptions\InvalidPitch
异常。
视野
可以使用方法 setFov(int $degrees)
定义视野。期望的值是从-10到100度。
use CyrildeWit\MapsUrls\Actions\DisplayStreetViewPanoramaAction; $displayStreetViewPanoramaAction = (new DisplayStreetViewPanoramaAction()) ->setFov(80);
当提供了无效的视野时,将抛出 CyrildeWit\MapsUrls\Exceptions\InvalidFov
异常。
魔术构造函数
要使用初始查询参数值实例化一个显示街景全景动作,可以调用魔法方法 DirectionsAction::make(array $options)
。
use CyrildeWit\MapsUrls\Actions\DirectionsAction; $displayStreetViewPanoramaAction = DirectionsAction::make([ 'viewpoint' => [48.857832, 2.295226], 'pano' => 'tu510ie_z4ptBZYo2BGEJg', 'heading' => 120, 'pitch' => 40, 'fov' => 80, ]);
致谢
- Cyril de Wit - 创建者 - cyrildewit
还可以查看参与此项目的贡献者列表。
许可
该项目采用MIT许可 - 请参阅LICENSE 文件以获取详细信息。