Google Places API - 自动填充与详细信息

时间:2017-08-01 15:57:43

标签: google-maps autocomplete

给出以下API调用自动完成功能:

https://maps.googleapis.com/maps/api/place/autocomplete/json?types=address&input=23%20norton%20st

我收到以下回复:

{
    "predictions": [
        {
            "description": "23 Norton Street, Leichhardt, New South Wales, Australia",
            "id": "9711c656faa60f77a05680b603523a4bc75c45be",
            "place_id": "EjgyMyBOb3J0b24gU3RyZWV0LCBMZWljaGhhcmR0LCBOZXcgU291dGggV2FsZXMsIEF1c3RyYWxpYQ",
            "types": [
                "route",
                "geocode"
            ]
        },
        ...
    ],
    "status": "OK"
}

注意类型是路由和地理编码。

如果我查询详细信息API:

https://maps.googleapis.com/maps/api/place/details/json?placeid=EjgyMyBOb3J0b24gU3RyZWV0LCBMZWljaGhhcmR0LCBOZXcgU291dGggV2FsZXMsIEF1c3RyYWxpYQ

我得到以下内容:

{
    "html_attributions": [],
    "result": {
        "id": "e698fdcd9dceed8fe42a926a19cb2b17d4f5f088",
        "name": "23 Norton St",
        "place_id": "ChIJpdXOTxewEmsRMmpMxLBgFpI",
        "reference": "CmRbAAAAKmYoyR1BrFqFQJi6CAD8cjhD4SDnZXMIC0mOLOpX_jPgIgFv0TJ3rv8p5L9xKrplHzUFxBNc8sd7PdkXdnCsTo_7-3X7mocd8yHnXCIKYAxj0MO4icLoFJjD3DEszqK3EhD8XIu6zNH-h3hqotfKjmd-GhRwyNIfJCo4bmOOLYgubm7j8ln_tw",
        "scope": "GOOGLE",
        "types": [
            "street_address"
        ],
        "url": "https://maps.google.com/?q=23+Norton+St,+Leichhardt+NSW+2040,+Australia&ftid=0x6b12b0174fced5a5:0x921660b0c44c6a32",
        "utc_offset": 600,
        "vicinity": "Leichhardt"
    },
    "status": "OK"
}

类型和地点ID与第一个响应不同。我希望它们是相同的,它们为什么不同?

2 个答案:

答案 0 :(得分:2)

如果您搜索“23 Norton Street”而不是“23 Norton St”,您实际上会得到您期望的结果(匹配place_id,类型等)。我认为正在发生的事情是,当您搜索23 Norton St时,它实际上没有匹配(如St而不是Street),因此它执行地理编码查找,这就是您看到的结果。

结果是否有任何原因导致您出现问题?或者只是一种奇怪/好奇心?

答案 1 :(得分:0)

不确定您的实际问题是什么,但Google地方信息实际上可能会为一个位置提供多个ID。参考:https://developers.google.com/places/place-id

此外,您似乎可以将自动完成设置仅提供有关geocoderoute的类型,因为这也是结果的选项。没有您的实际代码,它是未知的。

我确定您已访问过此处的文档:https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete

但也许你错过了那里的例子。希望能回答你的问题'!