joomla / openstreetmap

Joomla OpenStreetMap 包

1.1.0 2018-05-25 02:34 UTC

This package is auto-updated.

Last update: 2024-09-18 17:50:31 UTC


README

已弃用

joomla/openstreetmap 包已弃用,没有进一步更新的计划。

使用 OpenStreetMap 包

OpenStreetMap 包的目的是提供一个简单直接的接口来与 OpenStreetMap 交互。这是基于 OpenStreetMap API 的第 0.6 版。您可以在 https://wiki.openstreetmap.org/wiki/API_v0.6 找到有关 OpenStreetMap API 的更多信息。OpenStreetMap 包是在 Joomla\OAuth1 包的基础上构建的,该包为通信提供了 OAuth 1.0 安全基础设施。同时,也使用了 Joomla\Http 包,作为非安全信息交换的简单方式。

初始化 OpenStreetMap 类

初始化 OpenStreetMap 只需要几行代码

use Joomla\OpenStreetMap\OpenStreetMap;

$osm = new OpenStreetMap;

这会创建一个基本的 OpenStreetMap 对象,可以访问公开的 GET 方法。但是,当您想要发送数据或获取私有数据时,您还需要使用 Joomla\OpenStreetMap\OAuth 对象。

要初始化 Joomla\OpenStreetMap\OAuth 对象,您必须提供一个选项数组,一个 Joomla\Http\Http 实例用于 HTTP 请求,一个 Joomla\Input\Input 实例用于处理 OAuth 请求的数据,以及一个 Joomla\Application\AbstractWebApplication 实例用于处理 OAuth 请求。

use Joomla\Http\Http;
use Joomla\OpenStreetMap\OAuth;
use Joomla\OpenStreetMap\OpenStreetMap;

$key    = 'your_key';
$secret = 'your_secret';

$options = array('consumer_key' => $key, 'consumer_secret' => $secret, 'sendheaders' => true);

$client = new Http;

$application = $this->getApplication();

$oauth = new OAuth($options, $client, $application->input, $application);
$oauth->authenticate();

$osm = new OpenStreetMap($oauth);

为了获取密钥和密钥,您必须在 OpenStreetMap 上获得一个账户。通过您的账户,您需要 注册 您的应用程序以及一个回调 URL。

访问 OpenStreetMap API

此 API 将与 OpenStreetMap API 进行所有类型的交互。这已被分为 5 个主要部分:更改集、元素、GPS、信息和用户。所有这些都继承自 Joomla\OpenStreetMap\OpenStreetMapObject,可以通过 OpenStreetMap 类的魔法 __get 方法进行初始化。每种类型对象中的方法都与 OpenStreetMap API 调用密切相关。

一般用法

例如,要获取具有已知标识符的元素,您只需要在创建 $osm 后添加以下两行即可。

$element = $osm->elements;
$result = $element->readElement('node', 123);

// To view the \SimpleXMLElement object
print_r($result);

要向服务器发送信息,您必须使用 OAuth 认证。以下是一个创建新更改集的完整示例应用程序。稍后,您可以使用自己的更改集添加您想要的元素。

use Joomla\Http\Http;
use Joomla\OpenStreetMap\OAuth;
use Joomla\OpenStreetMap\OpenStreetMap;

$key    = 'your_key';
$secret = 'your_secret';

$options = array('consumer_key' => $key, 'consumer_secret' => $secret, 'sendheaders' => true);

$client = new Http;

$application = $this->getApplication();

$oauth = new OAuth($options, $client, $application->input, $application);
$oauth->authenticate();

$osm = new OpenStreetMap($oauth);

$changeset = $osm->changesets;

$changesets = array(
	'comment'    => 'My First Changeset',
	'created_by' => 'JoomlaOpenStreetMap'
);

$result = $changeset->createChangeset($changesets);

// Returned value contains the identifier of new changeset
print_r($result);

更多信息

以下资源包含更多信息: OpenStreetMap API

通过 Composer 安装

"joomla/openstreetmap": "2.0.*@dev" 添加到 composer.json 中的 require 块,然后运行 composer install

{
	"require": {
		"joomla/openstreetmap": "2.0.*@dev"
	}
}

或者,您可以直接在命令行中运行以下操作

composer require joomla/openstreetmap "2.0.*@dev"