如何使用谷歌地图从坐标中获取城市名称



我正在使用以下代码,但无法使其正常工作。它应该获取坐标并返回一个城市名称

<?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调用失败,这将允许您查看调用的结果。

最新更新