9

当在另一种语言 API 中再次寻找同一个城市以找到同一个城市的这个地方时,我需要获取一个城市名称的唯一标识符。

例子:

我通过 Google API 自动完成位置进行搜索,如下所示:

城市:纽约

结果是:

美国纽约州纽约市国家代码:美国

例如,当我再次用俄语搜索“纽约”时,我需要一个纽约的唯一标识符,以知道纽约在英语中与俄语中的“Нью-Йорк”相同

结果是:

Нью-Йорк, Нью-Йорк, США Код страны: США

我的问题是如何确定“纽约市”在两个搜索中是相同的,因为我比较了同一城市的不同语言的结果并确定两个答案指的是同一个纽约市?

4

1 回答 1

8

考虑以下两个查询。

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=newyork&types=(cities)&language=en&sensor=true&key=<YOUR-API-KEY>

以下是 JSON 响应的前几行。如您所见,id结果中有一个可用的(reference值已编辑):

{
   "predictions" : [
      {
         "description" : "New York, NY, United States",
         "id" : "7eae6a016a9c6f58e2044573fb8f14227b6e1f96",
         "matched_substrings" : [
            {
               "length" : 8,
               "offset" : 0
            }
         ],
         "reference" : "CkQzAAAAs[...]g5OK5Y",
         ...

现在查询俄语:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Нью-Йорк&types=(cities)&language=ru&sensor=true&key=<YOUR-API-KEY>

此查询返回更多预测(在密苏里州、内布拉斯加州等地具有相同名称的城市),但您仍然可以使用以下命令从俄语结果中找到纽约市id

    {
   "predictions" : [
      {
         "description" : "Нью-Йорк, Соединенные Штаты Америки",
         "id" : "7eae6a016a9c6f58e2044573fb8f14227b6e1f96",
         "matched_substrings" : [
            {
               "length" : 8,
               "offset" : 0
            }
         ],
         "reference" : "CmRZAAAA[...]s10LLA",
         ... 

      {
         "description" : "Нью Йорк, Миссури, Соединенные Штаты Америки",
         "id" : "211cae70217210a77581fd2a2dca45bc4286e064",
         ...
         "reference" : "CnRpAAAA[...]FUydA",
         ...
      {
         "description" : "Нью Йорк, Небраска, Соединенные Штаты Америки",
         "id" : "10a97689b3441120410e18c71d7f1b9ed70ac2e7",
         ...
         "reference" : "CnRrAAAA[...]XrkzYY",
         ...
      {
         "description" : "Нью-Йорк Милс, Нью-Йорк, Соединенные Штаты Америки",
         "id" : "2902d4dc0e1ecfe52aef4da6d5eb06e4c9fab4d9",
         ...
         "reference" : "CoQBcwAAA[...]g3G1Jw",
         ...

您可以使用以下方法查询Place Details APIreference(对于上面的每个预测结果都不同):

https://maps.googleapis.com/maps/api/place/details/json?reference=CkRAAAAA[...]cLKfOc_4mvY&language=ru&sensor=true&key=<YOUR-API-KEY>

并用于id验证您正在搜索的地方的身份。引用地点详细信息 API 文档

id包含一个唯一的稳定标识符来表示这个地方。此标识符可能不用于检索有关此地点的信息,但可用于合并有关此地点的数据,并在单独的搜索中验证地点的身份。由于ids偶尔会发生变化,建议将存储id的位置与稍后在同一位置的详细信息请求中返回的值进行比较id,并在必要时进行更新。

传递id给这个查询仍然是可能的,但reference它是一个必填字段:

https://maps.googleapis.com/maps/api/place/details/json?id=7eae6a016a9c6f58e2044573fb8f14227b6e1f96&language=ru&reference=CkRAAAAA[...]cLKfOc_4mvY&sensor=true&key=<YOUR-API-KEY>
于 2013-05-02T00:11:26.857 回答