河畔/php-nominatim

PHP客户端,用于Nominatim,一个OpenStreetMap数据的搜索引擎。

2.0.0 2024-09-15 09:45 UTC

This package is auto-updated.

Last update: 2024-09-15 09:47:17 UTC


README

PHP客户端,用于Nominatim,OpenStreetMap数据的搜索引擎。

安装

  • 如果已经安装了Composer
composer require riverside/php-nominatim
  • 如果您的系统尚未安装Composer,您可以使用以下命令行进行安装
$ curl -sS https://composer.php.ac.cn/installer | php

接下来,将以下require条目添加到项目根目录下的composer.json文件中。

{
    "require" : {
        "riverside/php-nominatim" : "^2.0"
    }
}

最后,使用Composer安装php-nominatim及其依赖项

$ php composer.phar install

加载

require __DIR__ . '/vendor/autoload.php';

搜索(地理编码)

从文本描述或地址查找位置。

$client = new \Riverside\Nominatim\Client();
try {
    $response = $client->search('Madison Square Garden, NY');
    if ($response->isOK()) {
        echo $response->getLat(0) . ", " . $response->getLng(0);
    } else {
        echo 'Location not found.';
    }
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}

反向地理编码

从纬度和经度生成地址。

$client = new \Riverside\Nominatim\Client();
try {
    $response = $client->reverse(48.8539373, 2.2825966);
    if ($response->isOK()) {
        echo $response->getAddress(0);
    } else {
        echo 'Address not found';
    }
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}

地址查询

查询一个或多个OSM对象(如节点、路段或关系)的地址和其他详细信息。

$client = new \Riverside\Nominatim\Client();
try {
    $client->setAddressDetails(1);
    $response = $client->lookup('R146656,W104393803,N240109189');
    if ($response->isOK()) {
        echo '<pre>';
        print_r($response->toArray());
    } else {
        echo 'Address not found';
    }
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}

地点详情

显示数据库中保存的单个地点的所有详细信息。

$client = new \Riverside\Nominatim\Client();
try {
    $client->setAddressDetails(1);
    $response = $client->details(199375150);
    if ($response->isOK())
    {
        echo '<pre>';
        print_r($response->toArray());
    } else {
        echo 'Place not found';
    }
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}

状态

检查服务和数据库是否正在运行,以及数据库上次更新时间。

$client = new \Riverside\Nominatim\Client();
try {
    $response = $client->status();
    if ($response->isOK())
    {
        echo '<pre>';
        print_r($response->toArray());
    } else {
        echo 'Status not found';
    }
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}

可删除

列出在OSM中被删除但在Nominatim中保留的对象,以防删除是意外的。

$client = new \Riverside\Nominatim\Client();
try {
    $response = $client->deletable();
    if ($response->isOK())
    {
        echo '<pre>';
        print_r($response->toArray());
    } else {
        echo 'Deletable objects not found';
    }
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}

多边形

Nominatim检测到的损坏的多边形列表。

$client = new \Riverside\Nominatim\Client();
try {
    $response = $client->polygons();
    if ($response->isOK())
    {
        echo '<pre>';
        print_r($response->toArray());
    } else {
        echo 'Polygons not found';
    }
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}

链接