为什么Google Places API不会从唯一的结果返回城市?

时间:2018-02-19 14:39:22

标签: google-places-api

我正在使用Google Places API根据邮政编码或邮政编码找出某个人所在的城市。

例如,获取邮政编码“SW1A 1AA”的城市:

https://maps.googleapis.com/maps/api/place/autocomplete/json?key=[KEY]&input=sw1a%201aa

返回一个预测:

{
    "predictions": [
        {
            ...
            "structured_formatting": {
                "main_text": "SW1A 1AA",
                "main_text_matched_substrings": [...],
                "secondary_text": "London, UK"
            },
            "terms": [
                {
                    "offset": 0,
                    "value": "London"
                },
                {
                    "offset": 7,
                    "value": "SW1A 1AA"
                },
                {
                    "offset": 17,
                    "value": "UK"
                }
            ],
            ...
        }
    ],
    "status": "OK"
}

它标识它位于伦敦

但是,我想具体了解这个城市或国家。所以我按照Google Places API docs

的指示添加types=(country)

https://maps.googleapis.com/maps/api/place/autocomplete/json?types=(country)&key=[KEY]&input=sw1a%201aa

返回:

{
    "predictions": [],
    "status": "INVALID_REQUEST"
}
如果我们尝试城市,也一样:

https://maps.googleapis.com/maps/api/place/autocomplete/json?types=(cities)&key=[KEY]&input=sw1a%201aa

{
    "predictions": [],
    "status": "ZERO_RESULTS"
}

我知道有很多类似的问题,但主要是限制一个区域。我不需要或不想限制某个区域,我只想根据Google的文档返回城市(或等价物)。

有人知道我是否错误地阅读了文档?有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

如果您想使用Google API将邮政编码与地点匹配,那么我会使用地理编码API(请注意,我认为您需要一个新的API密钥)

https://maps.googleapis.com/maps/api/geocode/json?address=sw1a%201aa&key=APIKEY

types=(country)没有返回任何内容,因为这不是自动填充中的标志。您强制API将您的查询视为国家/地区,而不是,因此它不返回任何内容。使用地点类型标志的正确查询将是:

https://maps.googleapis.com/maps/api/place/autocomplete/json?key=APIKEY&input=sw1a%201aa&type=(regions)

如果您感兴趣,http://postcodes.io/是将邮政编码转换为地点的另一个有用资源。