jensostertag/geocoding-util

一个简单的PHP库,用于Nominatim地理编码API

1.0.0 2023-07-14 05:20 UTC

This package is auto-updated.

Last update: 2024-09-22 17:11:57 UTC


README

这是一个简单的PHP库,用于使用Nominatim API进行(反向)地址编码。

法律声明:此库使用了Nominatim API。在使用之前,请阅读使用条款,并遵守这些条款。

OpenStreetMap的数据根据ODbL授权。

此库使用Curl-Adapter库向Nominatim API发送请求。

Curl-Adapter库根据MIT许可证授权。(c)2023 Jens Ostertag

安装

要安装此库,请使用composer将其包含在您的项目中

{
    "require": {
        "jensostertag/geocoding-util": "1.0.0"
    }
}

用法

将地址编码为坐标

以下示例显示了如何将地址编码为坐标

<?php

use jensostertag\Geocoding\Geocoding;

$geocoding = new Geocoding();
$geocoding->setStreet("James-Franck-Ring")
          ->setHouseNumber("1")
          ->setCity("Ulm")
          ->setZipCode("89081")
          ->setCountry("Germany");
$coordinates = $geocoding->getCoordinates();
$lat = $coordinates["latitude"];
$lng = $coordinates["longitude"];

上述示例将返回以下坐标

{
    "latitude": 48.4253584,
    "longitude": 9.956179
}
将坐标反向编码为地址

以下示例显示了如何将坐标反向编码为地址

<?php

use jensostertag\Geocoding\Geocoding;
    
$geocoding = new Geocoding();
$geocoding->setCoordinates(48.4253584, 9.956179)
          ->toAddress();
$address = $geocoding->getAddress();
$street = $address["street"];
$houseNumber = $address["houseNumber"];
$city = $address["city"];
$zipCode = $address["zipCode"];
$country = $address["country"];
$formattedAddress = $geocoding->getFormattedAddress();

上述示例将返回以下地址

{
    "street": "James-Franck-Ring",
    "houseNumber": null,
    "city": "Ulm",
    "zipCode": "89081",
    "country": "Deutschland"
}

格式化的地址也将是一个包含两种格式化选项的数组,分别是内联和带有\n换行符的

{
    "inline": "James-Franck-Ring, 89081 Ulm, Deutschland (DE)",
    "lineBreaks": "James-Franck-Ring\n89081 Ulm\nDeutschland (DE)"
}
设置自定义用户代理

您可能想为向Nominatim API的请求设置自定义用户代理以标识您的应用程序。为此,请使用

<?php

use jensostertag\Geocoding\Geocoding;

Geocoding::setUserAgent("MyApplication/1.0");

如果您没有设置自定义用户代理,默认将是

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0
设置自定义Nominatim API URL

公共Nominatim API在您可以发送的请求数量方面非常有限。如果您想使用自己的Nominatim API实例,您可以设置API的自定义URL。为此,请使用

<?php

use jensostertag\Geocoding\Geocoding;

Geocoding::setApiUrl("https://nominatim.mydomain.com");