geocoder-php / mapquest-provider
Geocoder MapQuest 适配器
4.3.0
2022-07-30 10:48 UTC
Requires
- php: ^7.4 || ^8.0
- geocoder-php/common-http: ^4.0
- willdurand/geocoder: ^4.0
Requires (Dev)
- geocoder-php/provider-integration-tests: ^1.1
- php-http/curl-client: ^2.2
- php-http/message: ^1.0
- phpunit/phpunit: ^9.5
Provides
This package is auto-updated.
Last update: 2024-09-04 10:51:31 UTC
README
这是来自 PHP Geocoder 的 MapQuest 提供者。这是一个 只读 仓库。有关信息和文档,请参阅 主仓库。
安装
composer require geocoder-php/mapquest-provider
使用更精确的地址进行地理编码
MapQuest 提供者允许您根据类 Geocoder\Model\Address
的完整地址对象或任何实现 Geocoder\Location
的对象创建和传递地理编码查询。
这将利用 MapQuest 所称的 5-box 输入地址格式。引用自 MapQuest 开发者:指定位置
5-Box 输入地址格式(与 JSON 和 XML 兼容),通过输入单个位置参数中的完整地址,允许进行更高程度的地址指定。5-Box 输入格式的好处在于它绕过了单行请求的解析功能。
如果您在变量 $address
中存储了一个实现 Geocoder\Location
的类的对象,则可以使用以下方式创建这种新的地理编码查询类型
$query = GeocodeQuery::create('foobar');
$query = $query->withData(MapQuest::DATA_KEY_ADDRESS, $address);
如果您希望 GeocodeQuery 也能与其他所有提供者良好工作,则需要将 $address
对象首先转换为文本字符串。假设您将这个文本字符串存储在变量 $addressAsString
中,则示例将如下所示
$query = GeocodeQuery::create($addressAsString);
$query = $query->withData(MapQuest::DATA_KEY_ADDRESS, $address);
以下是一个更完整的示例,包括使用语句和地址对象的构建
示例
use Geocoder\Model\AddressBuilder;
use Geocoder\Provider\MapQuest\MapQuest;
use Geocoder\Query\GeocodeQuery;
$provider = new MapQuest($httpClient, $apiKey);
$addressBuilder = new AddressBuilder('Address provided by me');
$addressBuilder
->setStreetNumber(4868)
->setStreetName('Payne Rd');
->setLocality('Nashville');
->setSubLocality('Antioch');
->setAdminLevels([
new AdminLevel(1, 'Tennessee', 'TN')
])
->setPostalCode('37013');
->setCountry('USA');
->setCountryCode('US');
$address = $addressBuilder->build();
$query = GeocodeQuery::create('dummy data');
$query = $query->withData(MapQuest::DATA_KEY_ADDRESS, $address);
$results = $provider->geocodeQuery($query);