【问题标题】:Null value returned from time to time by google geocoding API谷歌地理编码 API 不时返回空值
【发布时间】: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,看看它是否有任何线索可以找到那个原因。

标签: api geocoding geocode


【解决方案1】:

谷歌网络服务需要 SSL/TLS。

改变

$url = "http://maps.googleapis.com/maps/api/geocode/json?       latlng=".$latitude.",".$longitude."&key=NUMCLE";

$url = "https://maps.googleapis.com/maps/api/geocode/json?       latlng=".$latitude.",".$longitude."&key=NUMCLE";

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 2016-03-23
    • 2015-06-27
    • 2017-03-24
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多