lava83/nominatim-laravel

Nominatim API 的 Laravel 封装

v1.0.3 2021-07-07 20:49 UTC

This package is auto-updated.

Last update: 2024-09-08 03:56:33 UTC


README

Latest Stable Version License

简单的 OSM Nominatim 接口。

有关该服务的详细信息,请参阅 Nominatim 文档

安装

通过 composer 安装此包

composer require jbohme/nominatim-laravel

您必须使用以下命令发布项目配置

php artisan vendor:publish
php artisan config:cache

之后,文件 config/nominatim.php 将准备就绪。

如果您打算使用自定义 URL,必须在 .env 中包含 NOMINATIM_URL 参数

基本用法

创建 Nominatim 的新实例。

use NominatimLaravel\Content\Nominatim;

$url = "http://nominatim.openstreetmap.org/";
$nominatim = new Nominatim($url);

通过查询搜索

$search = $nominatim->newSearch();
$search->query('HelloWorld');

$nominatim->find($search);

或者按地址拆分

$search = $nominatim->newSearch()
            ->country('France')
            ->city('Bayonne')
            ->postalCode('64100')
            ->polygon('geojson')    //or 'kml', 'svg' and 'text'
            ->addressDetails();

$result = $nominatim->find($search);

或者进行反向查询

$reverse = $nominatim->newReverse()
            ->latlon(43.4843941, -1.4960842);

$result = $nominatim->find($reverse);

或者进行查找查询

$lookup = $nominatim->newLookup()
            ->format('xml')
            ->osmIds('R146656,W104393803,N240109189')
            ->nameDetails(true);

$result = $nominatim->find($lookup);

或者通过 place_id 进行详细信息查询

$details = $nominatim->newDetails()
            ->placeId(1234)
            ->polygon('geojson');

$result = $nominatim->find($details);

或者通过 osm 类型和 osm id 进行详细信息查询

$details = $nominatim->newDetails()
            ->osmType('R')
            ->osmId(1234)
            ->polygon('geojson');

$result = $nominatim->find($details);

默认情况下,请求的输出格式为 json,封装器返回结果数组。也可以是 xml,封装器返回一个 SimpleXMLElement 对象

如何覆盖请求头?

有两种可能性

  1. 通过 Nominatim 实例,对所有请求
$nominatim = new Nominatim($url, [
    'verify' => false
]);
  1. 通过 find 方法,对单个请求
$result = $nominatim->find($lookup, [
    'verify' => false
]);

如何自定义 HTTP 客户端配置?

您可以使用具有特定配置的自定义 HTTP 客户端。例如,您可以为所有请求编辑用户代理和超时时间

<?php
use maxh\Nominatim\Nominatim;
use GuzzleHttp\Client;

$url = "http://nominatim.openstreetmap.org/";
$defaultHeader = [
    'verify' => false,
    'headers', array('User-Agent' => 'api_client')
];

$client = new Client([
    'base_uri'           => $url,
    'timeout'            => 30,
    'connection_timeout' => 5,
]);

$nominatim = new Nominatim($url, $defaultHeader, $client);

注意

该项目受到了 maxhelias/php-nominatim 的启发。代码已根据 Laravel 标准进行了适配,以供未来的实现使用。

回顾 Nominatim 使用政策

如果您使用该服务: http://nominatim.openstreetmap.org/,请参阅 Nominatim 使用政策