luizcesar/olho-vivo-api

OlhoVivoAPI 是 SPTrans' OlhoVivo 的 PHP 实现。

2.2 2017-05-31 13:02 UTC

This package is not auto-updated.

Last update: 2024-09-25 01:45:42 UTC


README

License

PHP 实现 SPTrans' OlhoVivo API v2.1。

目录

简介

这是一个纯 PHP 面向对象的 SPTrans' OlhoVivoAPI v2.1 实现。OlhoVivo 官方 API 提供了巴西圣保罗(BR)公共交通巴士系统的实时数据。官方 API 中记录的所有方法都已实现。

此 API 可以

  • 按路线(可选)搜索巴士线路。
  • 搜索巴士站点。
  • 搜索由特定巴士线路服务的巴士站点。
  • 列出实际的圣保罗巴士快线(BRT)。
  • 报告在某一时间提供交通服务的所有公司。
  • 报告在某一时间由巴士线路服务的所有车辆及其位置。
  • 报告在某一时间特定巴士线路上的所有车辆及其位置。
  • 报告从运营商的停车场(可选)通过巴士线路传输位置的所有车辆。
  • 预测特定巴士站点在特定巴士线路上的到达时间。
  • 预测特定巴士线路服务的所有巴士站点的到达时间。
  • 预测在某一时间服务于特定巴士站点的所有巴士线路的到达时间。
  • 获取包含实际交通状况的 KMZ 文件。

此包的对象可以与 GTFS 表 本地一起使用。

此代码可在 Github 上找到。欢迎提交拉取请求。

说明

获取令牌

  1. 注册 SPTrans 开发者区域
  2. 登录后,您需要创建一个应用程序名称并申请令牌。

使用 Composer 需求此包

通过 Composer 安装此包。编辑您的项目 composer.json 文件以需求 luizcesar/olho-vivo-api

创建 composer.json 文件

{
    "name": "yourproject/yourproject",
    "type": "project",
    "require": {
        "php": ">=5.6",
        "luizcesar/olho-vivo-api": "*"
    }
}

并运行 composer update

或者

在您的命令行中运行此命令

composer require luizcesar/olho-vivo-api

配置

打开 olhoVivo.php 并填写您的 api-key。

使用示例

use LuizCesar\OlhoVivoAPI\Bulletins\ArrivalForecast;
use LuizCesar\OlhoVivoAPI\Entities\BusLine;
use LuizCesar\OlhoVivoAPI\Entities\BusStop;
use LuizCesar\OlhoVivoAPI\OlhoVivo;

//get an instance of OlhoVivo object
$spTrans = OlhoVivo::getInstance();

$aBusLine = ($spTrans->seekLines("875A",BusLine::WAY_FIRST_LEG))[0]; //The first match of a line search
$busStops = $spTrans->seekBusStopsByLine($aBusLine); //all stops served by $aBusLine
$aBusStop = $busStops[rand(0,count($busStops)-1)]; //get a random bus stop of $busStops'

//Get a Map of all Lines that have buses forecasted to arrive on the chosen bus stop.
$arrivalForecast = $spTrans->getArrivalForecastByStop($aBusStop);
$arrivalsMap = $arrivalForecast->getArrivalsMap(); //Map of Lines and array of buses

echo "Arrival forecast for bus stop at {$aBusStop->getName()}" . PHP_EOL .
	"Issued at: {$arrivalForecast->getTime()}" . PHP_EOL;

//The way to iterate over SplObjectStorage objects.
foreach($arrivalsMap as $line)
{
	echo "{$line->getFullSignCode()} {$line->getActualSignName()}" . PHP_EOL .
	"\t_______________________________" . PHP_EOL .
	"\t| Time  | Bus Id | Accessible |" . PHP_EOL .
	"\t|-------|--------|------------|" . PHP_EOL;
	foreach($arrivalsMap[$line] as $busForecast)
		echo "\t| {$busForecast->getTime()} | {$busForecast->getBus()->getId()}  |    " .
		($busForecast->getBus()->isAcc() == true ? ' YES' : ' NO ') . "    |" . PHP_EOL;
	echo "\t===============================" . PHP_EOL . PHP_EOL;
}

以下是一个示例输出

Arrival forecast for bus stop at R DR.  ALBUQUERQUE LINS
Issued at: 13:41
8000-10 TERM. LAPA
	_______________________________
	| Time  | Bus Id | Accessible |
	|-------|--------|------------|
	| 13:45 | 12125  |     NO     |
	| 13:46 | 12119  |     NO     |
	===============================

8622-10 MORRO DOCE
	_______________________________
	| Time  | Bus Id | Accessible |
	|-------|--------|------------|
	| 13:45 | 12125  |     NO     |
	| 13:46 | 12119  |     NO     |
	| 13:45 | 11771  |     NO     |
	===============================

8400-10 TERM. PIRITUBA
	_______________________________
	| Time  | Bus Id | Accessible |
	|-------|--------|------------|
	| 13:45 | 12125  |     NO     |
	| 13:46 | 12119  |     NO     |
	| 13:45 | 11771  |     NO     |
	| 13:46 | 11402  |     YES    |
	===============================

8615-10 PQ. DA LAPA
	_______________________________
	| Time  | Bus Id | Accessible |
	|-------|--------|------------|
	| 13:45 | 12125  |     NO     |
	| 13:46 | 12119  |     NO     |
	| 13:45 | 11771  |     NO     |
	| 13:46 | 11402  |     YES    |
	| 13:46 | 82496  |     YES    |
	===============================

8594-10 CID. D'ABRIL 
	_______________________________
	| Time  | Bus Id | Accessible |
	|-------|--------|------------|
	| 13:45 | 12125  |     NO     |
	| 13:46 | 12119  |     NO     |
	| 13:45 | 11771  |     NO     |
	| 13:46 | 11402  |     YES    |
	| 13:46 | 82496  |     YES    |
	| 13:48 | 11448  |     YES    |
	===============================

874T-10 LAPA
	_______________________________
	| Time  | Bus Id | Accessible |
	|-------|--------|------------|
	| 13:45 | 12125  |     NO     |
	| 13:46 | 12119  |     NO     |
	| 13:45 | 11771  |     NO     |
	| 13:46 | 11402  |     YES    |
	| 13:46 | 82496  |     YES    |
	| 13:48 | 11448  |     YES    |
	| 14:08 | 52214  |     YES    |
	===============================

875A-10 PERDIZES
	_______________________________
	| Time  | Bus Id | Accessible |
	|-------|--------|------------|
	| 13:45 | 12125  |     NO     |
	| 13:46 | 12119  |     NO     |
	| 13:45 | 11771  |     NO     |
	| 13:46 | 11402  |     YES    |
	| 13:46 | 82496  |     YES    |
	| 13:48 | 11448  |     YES    |
	| 14:08 | 52214  |     YES    |
	| 14:22 | 62106  |     NO     |
	| 14:46 | 62096  |     NO     |
	===============================

变更日志

v2.2

  • Bus 对象上实现 getOwners()
  • 问题修复。
  • 现在通过 getInstance() 方法检索 OlhoVivo 对象。

v2.1.0.1

  • 修复错误。

v2.1.0

  • 实现了 SPTrans API 的新版本(v2.1)。
  • 所有方法都已实现。
  • 公司对象。
  • 更好的错误处理。
  • 对象重新设计。

v0.2

  • 修复错误。
  • 能够检索巴士颜色。

v0.1

  • 发布第一个版本。

故障排除

如果您发现任何错误,请在 问题 页面上报告。

许可

请参阅本存储库中包含的授权协议,以获取完整的MIT授权协议副本,本项目的授权依据此协议。