rbit/milk-sdk-php

此软件包已被弃用且不再维护。作者建议使用hi-folks/milk-sdk-php软件包。

Milk SDK PHP 是一个(流畅的)开源 PHP 库,使您的 PHP 应用程序与 XYZ Hub API、Geocoder API 等位置服务轻松集成。

0.1.0 2020-03-07 08:42 UTC

This package is auto-updated.

Last update: 2020-10-21 07:03:51 UTC


README

Actions Status GitHub license

Milk SDK PHP 是一个(流畅的)开源 PHP 库,使您的 PHP 应用程序与以下位置服务轻松集成:

  • XYZ Hub API;
  • 路由 API;
  • 天气 目的地 API;
  • Geocoder API;
  • ...

入门

安装 SDK

在您的 PHP 项目中,通过 composer 安装软件包

composer require rbit/milk-sdk-php

配置 XYZ HUB

使用此 SDK,您可以选择以下两种方式之一使用 XYZ API:

  • 使用您自己的 XYZ HUB 实例,或者
  • 使用 XYZ HUB 云服务

使用您自己的 XYZ HUB 实例配置 SDK

运行您自己的 XYZ HUB 实例意味着您已经拥有https://github.com/heremaps/xyz-hub的实例。有关如何在本地上(localhost)设置 XYZ Hub 的教程:[链接](https://dev.to/robertobutti/restful-web-service-for-geospatial-data-12ii)

创建一个 .env 文件。填写如下内容:

XYZ_ACCESS_TOKEN=""
XYZ_API_HOSTNAME="https://:8080"

使用 XYZ HUB 云服务配置 SDK

使用 XYZ HUB 云服务意味着您正在使用此主机 https://xyz.api.here.com

要使用此服务,您需要在https://developer.here.com/上以开发者身份登录并创建您的计划(例如免费增值)并获取您的访问令牌。

一旦您拥有访问令牌,创建一个 .env 文件。您可以从示例文件(.env.dist)开始。

cp .env.dist .env

然后,您需要将您的 XYZ_ACCESS_TOKEN 填入 .env 文件中,使用您的访问令牌。

快速示例

为了使用 Milk SDK,您需要

  • 创建一个 PHP 文件
  • 包含 autoload.php 文件
  • 通过 use 声明所有导入
  • 加载环境配置(通过 Dotenv
  • 获取您的令牌
  • 获取您的 XYZ Spaces
  • 显示您的结果
<?php
// include the autoload.php file
require "./vendor/autoload.php";
// declare all imports via "use"
use Rbit\Milk\Xyz\Space\XyzSpace;
// load environment configuration (via Dotenv)
Dotenv\Dotenv::createImmutable(__DIR__)->load();
// get your Token
$xyzToken = getenv("XYZ_ACCESS_TOKEN");
// Get your XYZ Spaces
$s = XyzSpace::instance($xyzToken)->get();
// display your result
var_dump($s);

检索您的 XYZ Spaces

要获取您的 XYZ Spaces

$s = XyzSpace::instance($xyzToken)->get();

获取所有人的 XYZ Spaces(不仅仅是您自己的 XYZ Spaces)

$s =  XyzSpace::instance($xyzToken)->ownerAll()->get();

删除空间

要删除一个 XYZ Space

$xyzSpaceDeleted = XyzSpace::instance($xyzToken)->delete($spaceId);

创建空间

要创建一个新的 XYZ Space

$xyzSpaceCreated = XyzSpace::instance($xyzToken)->create("My Space", "Description");

更新空间

要更新空间 ID 为 $spaceId 的 XYZ Space

$obj = new \stdClass;
$obj->title = "Edited Title";
$obj->description = "Edited Description";
$retVal = $space->update($spaceId, $obj);

统计信息

从XYZ空间获取统计信息

$statistics =  XyzSpaceStatistics::instance($xyzToken)->spaceId($spaceId)->get();

功能特性

遍历功能特性

/** XyzSpaceFeature $xyzSpaceFeature */
$xyzSpaceFeature = new XyzSpaceFeature::instance($xyzToken);
$result = $xyzSpaceFeature->iterate($spaceId)->get();

获取1个功能特性

您需要使用 feature() 方法并传入 $featureId 和 $spaceId

$xyzSpaceFeature = XyzSpaceFeature::instance($xyzToken);
$result = $xyzSpaceFeature->feature($featureId, $spaceId)->get();

创建或编辑1个功能特性

要创建或编辑一个功能特性,您可以使用 saveOne() 方法。

$spaceId = "yourspaceid";
$featureId = "yourfeatureid";
$geoJson = new GeoJson();
$properties = [
    "name" => "Berlin",
    "op" => "Put"
];
$geoJson->addPoint(52.5165, 13.37809, $properties, $featureId);
$feature = XyzSpaceFeatureEditor::instance($xyzToken);
$result = $feature->feature($geoJson->get())->saveOne($spaceId, $featureId);
$feature->debug();

从geojson文件创建多个功能特性

如果您有Geojson文件,您可以将其上传到空间中。

$spaceId = "yourspaceid";
$file = "https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON";
$response = XyzSpaceFeatureEditor::instance($xyzToken)
    ->addTags(["file"])
    ->geojson($file)
    ->create($spaceId);

按属性搜索功能特性

要按属性搜索功能特性,您可以使用 addSearchParams 添加搜索参数,例如下面的示例中,您正在搜索具有 name 属性等于 "Colosseo" 的功能特性。

$spaceId = "yourspaceid";
$xyzSpaceFeature = XyzSpaceFeature::instance($xyzToken)->addSearchParams("p.name", "Colosseo");
$result = $xyzSpaceFeature->search($spaceId)->get();

按邻近度搜索功能特性

搜索距离纬度=41.890251 和经度=12.492373 1000米以内的功能特性(靠近斗兽场)

$spaceId = "yourspaceid";
$result = XyzSpaceFeature::instance($xyzToken)->spatial($spaceId,  41.890251, 12.492373,  1000)->get();

天气API

获取柏林的天气预报

$jsonWeather = ApiWeather::instance($hereApiKey)
    ->productForecast7days()
    ->name("Berlin")
    ->getJson();
var_dump($jsonWeather);

路由API(v7)

获取步行最快路线

$r =RoutingV7::instance($hereApiKey)
  ->byFoot()
  ->typeFastest()
  ->startingPoint(52.5160,13.3779)
  ->destination(52.5185,13.4283)
  ->getManeuverInstructions();

路由API(v8)

获取驾车最快路线

$routing = RoutingV8::instance($hereApiKey)
    ->byCar()
    ->routingModeFast()
    ->startingPoint(52.5160, 13.3779)
    ->destination(52.5185, 13.4283)
    ->returnInstructions()
    ->langIta()
    ->get();

有用参考

ReDoc API文档: https://xyz.api.here.com/hub/static/redoc/

Open API文档: https://xyz.api.here.com/hub/static/swagger/