使用PHP curl从Google的Geocoding API返回数据

时间:2017-08-16 17:25:10

标签: php angularjs curl google-geocoding-api

这个问题类似于另一个回答的问题,但是在这种情况下的解决方案是使用国家代码,这对于这种特定用途是不可行的,因为地址是由用户通过输入字段提供的(所以a可能不提供国家。)

以下是我当前请求的内容

来自AngularJS的请求:

function getCoordinatesFromApi(address) {
            addressApiResponse = $http({
                url: 'php/coordinates.php',
                method: 'get',
                params: {
                    address: address
                },
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}
            });
            return addressApiResponse;
        }

使用PHP处理的请求:

$api_maps = 'https://maps.googleapis.com/maps/';
$address = urencode($_GET['address']);
$api_key = 'API_key_here';
$url = $api_maps . 'api/geocode/json?address=' . $address . '&key=' . $api_key;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$curl_response = curl_exec($curl);
curl_close($curl);
echo ($curl_response);

调用此方法时,我会一直收到状态为200的有效响应,但数据为空字符串。

我已经检查了在PHP中构建的$ url的有效性,没关系,直接在浏览器中访问该URL会显示带有数据的有效API响应。

我也尝试过使用Angular的$ http 方法,并且也从API返回有效的响应:

function getCoordinatesFromApi(address) {
            addressApiResponse = $http.get('https://maps.googleapis.com/maps/api/geocode/json?address=' + address + '&key=API_key_here');
            return addressApiResponse;
        }

出于某种原因,它的卷曲方法没有按预期运行。有谁处理过这个问题?

2 个答案:

答案 0 :(得分:0)

如果你说回声($ curl_response);即使状态为200也不返回任何内容,这是因为它是JSON编码的!

请试试这个:

$decodedresponse = json_decode($curl_response);

//send me what var_dump return so I can hellp you accessing the array!
echo var_dump($decodedresponse);


//You would use as an array DEPENDING ON HOW THE ARRAY IS BUILD OF COURSE
echo $decodedresponse['response']['lat'];
echo $decodedresponse['response']['long'];

答案 1 :(得分:-1)

再试一次

CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false