我正在使用以下代码,但无法使其正常工作。它应该获取坐标并返回一个城市名称
<?php
function getAddress($lat, $lon) {
$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".
$lat.",".$lon."&sensor=false";
$json = @file_get_contents($url);
$data = json_decode($json);
$status = $data->status;
$address = '';
if($status == "OK"){
foreach($data->results[0]->address_components as $address_component) {
if(in_array('street_number', $address_component->types)) {
$street_number = $address_component->long_name;
}
if(in_array('route', $address_component->types)) {
$route = $address_component->long_name;
}
}
}
return $street_number." ".$route;
}
echo getAddress(-1.566120,53.824);
但是,它返回一个空白的白色页面。我做错了什么?请帮忙。
--更新的代码--简化了一点。。
<?php
$url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=44,44&key=<your-key-here>&sensor=false";
$json = @file_get_contents($url);
$data = json_decode($json);
$status = $data->status;
$address = '';
if($status == "OK"){
foreach($data->results[0]->address_components as $address_component) {
if(in_array('street_number', $address_component->types)) {
$street_number = $address_component->long_name;
}
if(in_array('route', $address_component->types)) {
$route = $address_component->long_name;
}
}
}
echo $street_number." ".$route;
?>
仍在寻找awnser:(
Google Maps API需要在URL中传递API密钥,如下面的示例所示。
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
请注意,上面的URL是HTTPS,而不是HTTP。HTTP不再适用于GoogleAPI。
正如@catcon所说,你需要在谷歌云项目上启用计费。
但是,为了避免出现空白页面,我建议您更改以下代码。
更改此
...
$json = @file_get_contents($url);
...
到这个
...
$json = @file_get_contents($url);
if ($json['status'] != 'OK') {
return $json;
}
...
如果API调用失败,这将允许您查看调用的结果。