lava83 / nominatim-laravel
Nominatim API 的 Laravel 封装
v1.0.3
2021-07-07 20:49 UTC
Requires
- php: >=7.0
- ext-mbstring: *
- guzzlehttp/guzzle: @stable
This package is auto-updated.
Last update: 2024-09-08 03:56:33 UTC
README
简单的 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 对象
如何覆盖请求头?
有两种可能性
- 通过
Nominatim
实例,对所有请求
$nominatim = new Nominatim($url, [ 'verify' => false ]);
- 通过
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 使用政策。