找不到类'Geocoder \ Provider \ OpenCage \ OpenCage'

时间:2019-05-14 15:52:14

标签: php api composer-php

我正在尝试将html 5位置请求中的经纬度转换为可读地址。我正在尝试为此使用openCage地理编码,但它一直显示nex错误:

找不到类'Geocoder \ Provider \ OpenCage \ OpenCage'

这是我的代码,就像the documentation所说的

<?php
require "vendor/autoload.php";

use Http\Adapter\Guzzle6\Client as GuzzleAdapter;
use Geocoder\Query\GeocodeQuery;
use Geocoder\Query\ReverseQuery;

$adapter  = new GuzzleAdapter();
$provider = new \Geocoder\Provider\OpenCage\OpenCage($adapter, 'APIKEY');
$geocoder = new \Geocoder\StatefulGeocoder($provider, 'en');

$results = $geocoder->geocodeQuery(GeocodeQuery::create('1 Hacker Way, Menlo Park, 94025'));
# print_r($results);

$coords = $results->first()->getCoordinates();

echo json_encode([ 'lat' => $coords->getLatitude(), 'lon' => $coords->getLongitude() ]) . "\n";

?>

1 个答案:

答案 0 :(得分:1)

从您链接到的文档中:

  

您可以使用两个PHP库

您已经安装了一个,并使用了另一个的示例代码。因此,请运行以下命令:

composer require willdurand/geocoder

并继续使用上面的代码。

或者,将代码替换为以下内容:

$geocoder = new \OpenCage\Geocoder\Geocoder('YOUR-API-KEY');
$result = $geocoder->geocode('1 Hacker Way, Menlo Park, 94025');
if ($result && $result['total_results'] > 0) {
    $first = $result['results'][0];
    echo json_encode([
        'lat' => $first['geometry']['lat'],
        'lon' => $first['geometry']['lng'],
    ]);

}