为什么Google Reverse Geocoding会在某些GPS坐标上返回ZERO_RESULTS?

时间:2017-06-30 17:02:31

标签: php json google-maps google-maps-api-3 reverse-geocoding

我正在使用反向地理编码服务,我得到了" ZERO_RESULTS"。 在我的PHP脚本中,我创建了以下函数:

public static function getJsonData($lat, $lng, $apikey) {
    $url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$lng."&language=en-EN&key=". $apikey;

    $json = file_get_contents($url, FALSE, self::_createContext());

    return $json;
}

以下是一些我没有得到结果的GPS坐标列表:

我还尝试在此页面上提交坐标:https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse,但我收到以下警告错误:

Geocoder因以下原因失败:ZERO_RESULTS

如果我尝试在Google地图上搜索相同的坐标,它会起作用,它会在地图上找到相关的地方,没有任何问题:

那么,为什么反向地理编码会失败?

修改

我使用与MapQuest反向地理编码API相同的坐标,它可以工作。我得到以下国家:

  • 印度
  • 摩洛哥
  • 以色列
  • 塞浦路斯

为什么MapQuest API适用于有争议的区域?

2 个答案:

答案 0 :(得分:2)

在地理编码器工具中查看示例中的第一个坐标:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D31.71255%252C35.22438

31.71255,35.22438位于约旦河西岸地区。西岸是有争议的地区,这是谷歌反向地理编码器的一个已知问题。争议区域中的所有坐标都返回ZERO_RESULTS。

公共问题跟踪器中存在此错误:

https://issuetracker.google.com/issues/35826813

随意添加您的投票明星,希望Google尽快解决。

  • 例2 - 查谟和克什米尔
  • 例3 - 西撒哈拉
  • 例4 - 约旦河西岸
  • 例5 - 北塞浦路斯

所有这些地区都是有争议的地区:

https://en.wikipedia.org/wiki/List_of_territorial_disputes

更新

好消息。截至2019年1月,谷歌在有争议的地区解决了ZERO_RESULTS的问题。

您可以看到现在他们返回结果,但国家/地区名称不会出现在回复中。这与他们在前向地理编码器中的方法一致。有争议的地区没有国名。

答案 1 :(得分:0)

在Google地图中查看塞浦路斯,看起来他们在这个地区没有数据,因此缺乏回应。

如果您需要此区域,我会查看其他rgeo服务。也许看看Skyhook,百度或Mapquest。