【发布时间】:2018-08-24 21:47:54
【问题描述】:
我的谷歌地理编码 API 有问题。
确实,我使用坐标(纬度和经度)来查找城市和国家。因此,我使用了这个 google geocoding API。
另一方面,这是我遇到问题的地方,有时它可以工作,但大多数情况下,我得到的是 NULL 值,而不是恢复城市和国家/地区。
我还检查了 Google API 仪表板(我在其中保存了密钥号),我发现很多调用都出错了:出现 403 错误。他过去了,那是我不明白的地方。
如果我只在浏览器中直接获取 URL,那么我会得到正确的值。 我不明白为什么有时它会起作用,而其他时候(但更常见)我得到 NULL。
这是我使用的 PHP 代码:
$latitude = (isset($_GET["lat"])) ? $_GET["lat"] : NULL;
$longitude = (isset($_GET["long"])) ? $_GET["long"] : NULL;
if ($latitude && $longitude) {
$url = "http://maps.googleapis.com/maps/api/geocode/json? latlng=".$latitude.",".$longitude."&key=NUMCLE";
$data = @file_get_contents($url);
$jsondata = json_decode($data,true);
if(is_array($jsondata) && $jsondata['status'] == "OK")
{
$city = $jsondata['results']['0']['address_components']['2'] ['long_name'];
$country = $jsondata['results']['0']['address_components']['5']['long_name'];
$street = $jsondata['results']['0']['address_components']['1']['long_name'];
?>
如果你能帮我解决这个问题,那就太好了。 提前感谢您的帮助。
【问题讨论】:
-
您是否尝试过从 URL 中删除空格?
-
对不起,这是一个错误的复制粘贴,网址中没有空格。
-
尽管它在技术上被归类为错误,
403表示禁止。这意味着代码中没有错误,但是您获取某些资源的请求被主动阻止/拒绝,因为它不符合某些标准。这可能与使用该服务的某些帐户限制有关,可能是很多事情,但这不是无意的错误。您需要处理发出403响应的原因。尝试更深入地查看403,看看它是否有任何线索可以找到那个原因。