jensostertag / geocoding-util
一个简单的PHP库,用于Nominatim地理编码API
1.0.0
2023-07-14 05:20 UTC
Requires
- php: >=8.0.0
- jensostertag/curl-adapter: 1.0.0
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");