我正在尝试将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";
?>
答案 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'],
]);
}