自动补全(新)

请选择平台: Android iOS JavaScript 网络服务

自动补全(新)服务是一项可返回地点的网络服务 响应 HTTP 请求的响应和查询预测。在请求中指定一个文本 搜索字符串和地理边界,控制搜索区域。

自动补全(新)服务可以匹配完整字词和 来解析地点名称、地址和 plus 代码。因此,应用可以将 查询,以实时提供地点和查询预测。

Autocomplete(新)API 的响应可以包含两种类型 的预测:

  • 地点预测:地点,例如商家、地址和 兴趣。地点预测 默认值。
  • 查询预测:与输入文本字符串和 。默认情况下,查询预测不会返回。使用 includeQueryPredictions 请求参数,用于将查询预测添加到 响应。

例如,您可以使用包含部分用户输入的字符串作为输入来调用 API, “Sicilian piz”(西西里岛),搜索区域仅限于加利福尼亚州旧金山。然后,响应中包含 与搜索字符串和搜索区域匹配的地点联想查询列表,例如 餐厅,并附上了这个地方的详细信息。

返回的地点预测旨在呈现给用户,以帮助 选择所需地点您可以 地点详情(新) 请求以获取有关返回的任何地点预测结果的更多信息。

响应还可以包含一系列与搜索查询相匹配的 搜索字符串和搜索区域,例如“西西里披萨和意大利面”。每个查询 响应包含 text 字段,该字段包含建议的文本搜索字符串。使用 作为输入 文本搜索(新) 执行更详细的搜索

利用 API Explorer,您可以发出实时请求,从而熟悉 API 和 API 选项:

试试看!

“自动补全(新)”请求

“自动填充(新)”请求是对 表单:

https://places.googleapis.com/v1/places:autocomplete

将 JSON 请求正文或标头中的所有参数作为 POST 请求的一部分传递。 例如:

curl -X POST -d '{
  "input": "pizza",
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

关于响应

Autocomplete(新)会返回一个 JSON 对象作为响应。 在响应中:

  • suggestions 数组包含按顺序预测的所有地点和查询 根据其判断的相关性。每个地点都由 placePrediction 字段,每个查询都表示为 由 queryPrediction 字段指定。
  • placePrediction 字段包含单个 地点预测,包括地点 ID 和文本说明。
  • queryPrediction 字段包含单个 查询预测。

完整的 JSON 对象格式如下:

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "text": {
          "text": "Amoeba Music, Haight Street, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }]
        },
      ...
    },
    {
      "queryPrediction": {
        "text": {
          "text": "Amoeba Music",
          "matches": [
            {
              "endOffset": 6
            }]
        },
        ...
    }
  ...]
}

必需参数

  • 输入

    要搜索的文本字符串。指定完整字词和子字符串, 地点名称、地址和 Plus Codes。 自动补全(新)服务 根据此字符串返回候选匹配项,并按照 感受到的相关性。

可选参数

  • includedPrimaryTypes

    一个地点只能有一个主要类型 表 A表 B.例如: 主要类型可能是 "mexican_restaurant""steak_house"

    默认情况下,无论如何,该 API 都会根据 input 参数返回所有地点。 。将结果限制为特定 primary type 或 primary 类型,请传递 includedPrimaryTypes 参数。

    使用此参数指定表 A 中最多五个类型值,或 表 B.地点必须 与要包含在响应中的某个指定主要类型值匹配。

    不过,此参数还可能包含 (regions)(cities) 中的一个。 (regions) 类型的集合过滤器适用于区域或分区,例如社区和邮政编码。 (cities) 类型集合用于过滤 Google 已识别为城市的地点。

    如果出现以下情况,则请求将被拒绝并出现 INVALID_REQUEST 错误:

    • 指定了超过五种类型。
    • (cities)(regions) 之外,还可以指定任何类型。
    • 指定了所有无法识别的类型。
  • includeQueryPredictions

    如果为 true,则响应同时包含地点和查询预测。默认 值为 false,表示响应仅包含地点预测。

  • includedRegionCodes

    仅包含来自指定区域列表的结果,该列表以最多 15 个数组的形式指定 ccTLD(“顶级域名”) 两个字符的值。如果省略,则不会对响应应用任何限制。例如: 将区域限制为德国和法国:

        "includedRegionCodes": ["de", "fr"]

    如果您同时指定 locationRestrictionincludedRegionCodes, 结果就会出现在两种设置的交集区域中。

  • inputOffset

    从零开始的 Unicode 字符偏移量,表示 input 中的光标位置。 光标位置会影响返回的预测结果。如果为空,则默认为 长度为 input

  • languageCode

    返回结果时使用的首选语言。结果可能会以多种语言显示 如果 input 中使用的语言不同于 languageCode,或者返回的地点没有来自 languageCode翻译为当地语言。

    • 您必须使用 IETF BCP-47 语言代码来指定首选语言。
    • 如果未提供 languageCode,则 API 会使用 Accept-Language 标头。如果两者都未指定,则默认为 en。如果您指定的语言代码无效,API 会返回 INVALID_ARGUMENT 个错误。
    • 首选语言对要返回的结果集影响较小 API 选择返回的条目以及这些条目的返回顺序。 这也会影响 API 纠正拼写错误的能力。
    • API 尝试提供对用户和 同时反映用户的输入内容。地点预测 格式会有所不同,具体取决于每个请求中的用户输入。
      • 首先选择 input 参数中的匹配字词,并使用对齐的名称 以及 languageCode 参数指定的语言偏好设置, 否则使用最符合用户输入的名称。
      • 街道地址采用本地语言的格式,以用户可阅读的脚本格式显示 选择匹配字词与 input 参数。
      • 完成匹配字词后,所有其他地址会以首选语言返回 与 input 参数中的字词匹配。如果名称不是 ,则该 API 会使用最接近的匹配项。
  • locationBias 或 locationRestriction

    您可以指定 locationBiaslocationRestriction, (但不能同时设置这两者)来定义搜索区域。将 locationRestriction 视为 结果所在的区域,以及 locationBias 指定结果必须靠近但可以不在的区域 数据。

    • locationBias

      指定要搜索的区域。这个位置就是一种偏差,这意味着 可返回指定位置周围的结果,包括结果 在指定区域之外。

    • locationRestriction

      指定要搜索的区域。指定区域以外的搜索结果不予显示 返回。

    locationBiaslocationRestriction 区域指定为 矩形视口或圆形

    • 圆形由中心点和半径(以米为单位)定义。半径必须在 0.0 和 50000.0(含边界值)。默认值为 0.0。对于locationRestriction, 您必须将半径设置为大于 0.0 的值。否则,该请求会返回 没有匹配的结果。

      例如:

      "locationBias": {
        "circle": {
          "center": {
            "latitude": 37.7937,
            "longitude": -122.3965
          },
          "radius": 500.0
        }
      }
    • 矩形是一种经纬度视口,表示为 low和高点对角线。视口被视为 表示它包含其边界。纬度边界 必须介于 -90 度(含)到 90 度(含)之间,且经度范围必须为 必须介于 -180 度到 180 度之间(包括 -180 度和 180 度):

      • 如果 low = high,视口由该单点组成。
      • 如果 low.longitude >high.longitude,经度范围会反转 (该视口与 180 度经度线相交)。
      • 如果 low.longitude = -180 度,high.longitude = 180 度, 该视口包含所有经度。
      • 如果 low.longitude = 180 度,high.longitude = -180 度, 经度范围为空。

      lowhigh 都必须填充,并且所表示的 box 不能为空。视口为空会导致错误。

      例如,以下视口将纽约市完全包围:

      "locationBias": {
        "rectangle": {
          "low": {
            "latitude": 40.477398,
            "longitude": -74.259087
          },
          "high": {
            "latitude": 40.91618,
            "longitude": -73.70018
          }
        }
      }
  • 要计算从该起点到终点的直线距离 目的地(返回为 distanceMeters)。如果此值 将不返回直线距离。必须指定为 经纬度坐标:

    "origin": {
        "latitude": 40.477398,
        "longitude": -74.259087
    }
  • regionCode

    用于设置响应格式的地区代码,指定为 ccTLD(“顶级域名”) 两个字符的值。大多数 ccTLD 代码都与 ISO 3166-1 代码相同, 但有一些值得注意的例外情况。例如,英国的 ccTLD 为 "uk"(.co.uk),而其 ISO 3166-1 代码为“gb”(从技术层面来讲, “大不列颠及北爱尔兰联合王国”)。

    如果您指定的地区代码无效,则 API 会返回 INVALID_ARGUMENT 错误。根据适用法律,该参数可能会影响结果。

  • sessionToken

    会话令牌是用户生成的字符串,用于跟踪自动补全情况 (新)调用作为“会话”。自动补全(新)会使用会话令牌 将用户自动补全搜索的查询和选择阶段归入单独的会话 结算目的。如需了解详情,请参阅 会话令牌

自动补全(新)示例

使用 locationRestriction 和 locationBias

默认情况下,该 API 使用 IP 自定义调整来控制搜索区域。通过 IP 自定义调整,该 API 会使用 设备的 IP 地址,用于调整结果。您可以视需要使用 locationRestrictionlocationBias(但不能同时使用这两者),以指定要搜索的区域。

locationRestriction 用于指定要搜索的区域。指定区域以外的结果 不会返回。在以下示例中,您将使用 locationRestriction 来限制 请求发送到以旧金山为中心、半径 5000 米的圆形:

curl -X POST -d '{
  "input": "Amoeba",
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 5000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

指定区域内的所有结果都包含在 suggestions 数组中:

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "text": {
          "text": "Amoeba Music, Haight Street, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Amoeba Music",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "secondaryText": {
            "text": "Haight Street, San Francisco, CA, USA"
          }
        },
        "types": [
          "home_goods_store",
          "establishment",
          "store",
          "point_of_interest",
          "electronics_store"
        ]
      }
    }
  ]
}

使用 locationBias 时,位置会充当偏差,这意味着结果在 可返回指定位置,包括指定区域以外的结果。在未来 例如,您将请求更改为使用 locationBias

curl -X POST -d '{
  "input": "Amoeba",
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 5000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

结果现在包含更多项,包括半径 5000 米以外的结果:

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "text": {
          "text": "Amoeba Music, Haight Street, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Amoeba Music",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "secondaryText": {
            "text": "Haight Street, San Francisco, CA, USA"
          }
        },
        "types": [
          "electronics_store",
          "point_of_interest",
          "store",
          "establishment",
          "home_goods_store"
        ]
      }
    },
    {
      "placePrediction": {
        "place": "places/ChIJr7uwwy58hYARBY-e7-QVwqw",
        "placeId": "ChIJr7uwwy58hYARBY-e7-QVwqw",
        "text": {
          "text": "Amoeba Music, Telegraph Avenue, Berkeley, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Amoeba Music",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "secondaryText": {
            "text": "Telegraph Avenue, Berkeley, CA, USA"
          }
        },
        "types": [
          "electronics_store",
          "point_of_interest",
          "establishment",
          "home_goods_store",
          "store"
        ]
      }
    },
    ...
  ]
}

使用 includePrimaryType

使用 includedPrimaryTypes 参数指定最多 5 个来自 表 A表 B, 或仅 (regions),或仅 (cities)。地点必须与指定的 要包含在响应中的主要类型值。

在以下示例中,您指定了 input 字符串 “Soccer”并使用 includedPrimaryTypes 参数将结果限制为 "sporting_goods_store" 类型的场所:

curl -X POST -d '{
  "input": "Soccer",
  "includedPrimaryTypes": ["sporting_goods_store"],
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

如果您省略 includedPrimaryTypes 参数,则结果可能会包含 您不想要的类型,例如 "athletic_field"

请求预测查询

默认情况下,查询预测不会返回。使用 includeQueryPredictions 请求参数,以将查询预测添加到响应中。例如:

curl -X POST -d '{
  "input": "Amoeba",
  "includeQueryPredictions": true,
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 5000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

suggestions 数组现在同时包含地点预测和查询预测 如上文关于响应部分所示。每个查询预测 包含 text 字段,该字段包含建议的文本搜索字符串。您可以 文本搜索(新) 请求获取有关所返回的任何联想查询的更多信息。

使用源

在此示例中,将 origin 作为纬度和经度坐标包含在请求中。 添加 origin 后,API 会在distanceMeters 响应,其中包含从 origin 到目的地的直线距离。 以下示例将原点设置为旧金山的中心:

curl -X POST -d '{
  "input": "Amoeba",
  "origin": {
    "latitude": 37.7749,
    "longitude": -122.4194
  },
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 5000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

响应现在包含 distanceMeters

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "text": {
          "text": "Amoeba Music, Haight Street, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Amoeba Music",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "secondaryText": {
            "text": "Haight Street, San Francisco, CA, USA"
          }
        },
        "types": [
          "home_goods_store",
          "establishment",
          "point_of_interest",
          "store",
          "electronics_store"
        ],
        "distanceMeters": 3012
      }
    }
  ]
}

试试看!

借助 API Explorer,您可以发出示例请求, 您可以熟悉 API 和 API 选项。

  1. 选择 API 图标 展开 API Explorer。, 。
  2. (可选)展开显示标准参数,并设置 fields 参数 字段掩码
  3. (可选)修改请求正文
  4. 选择执行按钮。在弹出式窗口中,选择您要用于发出请求的账号。
  5. 在 API Explorer 面板中,选择“展开”图标, 展开 API Explorer。 用于展开 API Explorer 窗口。