次场所的PlaceId

时间:2019-01-18 02:29:46

标签: google-maps web-services google-places-api google-places

为什么我会用一个不同的place_id响应,然后用我的地方详细信息API查询中的那个?

https://maps.googleapis.com/maps/api/place/details/json?placeid=Eiw5LzUwIE1hcmtldCBTdHJlZXQsIE1lbGJvdXJuZSBWSUMsIEF1c3RyYWxpYSIwEi4KFAoSCR3TztZMXdZqEREXsZzx5CRAEDIqFAoSCXUvVtBMXdZqEc9Cc6QFzzMr&fields=address_components,formatted_address,place_id,types&key=

{
   "html_attributions" : [],
   "result" : {
      "address_components" : [
         {
            "long_name" : "50",
            "short_name" : "50",
            "types" : [ "street_number" ]
         },
         {
            "long_name" : "Market Street",
            "short_name" : "Market St",
            "types" : [ "route" ]
         },
         {
            "long_name" : "Melbourne",
            "short_name" : "Melbourne",
            "types" : [ "locality", "political" ]
         },
         {
            "long_name" : "Melbourne City",
            "short_name" : "Melbourne",
            "types" : [ "administrative_area_level_2", "political" ]
         },
         {
            "long_name" : "Victoria",
            "short_name" : "VIC",
            "types" : [ "administrative_area_level_1", "political" ]
         },
         {
            "long_name" : "Australia",
            "short_name" : "AU",
            "types" : [ "country", "political" ]
         },
         {
            "long_name" : "3000",
            "short_name" : "3000",
            "types" : [ "postal_code" ]
         }
      ],
      "formatted_address" : "50 Market St, Melbourne VIC 3000, Australia",
      "place_id" : "Eis1MCBNYXJrZXQgU3QsIE1lbGJvdXJuZSBWSUMgMzAwMCwgQXVzdHJhbGlhIjASLgoUChIJHdPO1kxd1moRERexnPHkJEAQMioUChIJdS9W0Exd1moRz0JzpAXPMys",
      "types" : [ "street_address" ]
   },
   "status" : "OK"
}

我还注意到返回的地址不同。

查询中的Placeid是我收到的自动完成服务响应。

{
     "description" : "9/50 Market Street, Melbourne VIC, Australia",
     "id" : "06f000a321dc5f1347b79dcbe4d611390f750f36",
     "matched_substrings" : [
        {
           "length" : 18,
           "offset" : 0
        }
     ],
     "place_id" : "Eiw5LzUwIE1hcmtldCBTdHJlZXQsIE1lbGJvdXJuZSBWSUMsIEF1c3RyYWxpYSIwEi4KFAoSCR3TztZMXdZqEREXsZzx5CRAEDIqFAoSCXUvVtBMXdZqEc9Cc6QFzzMr",
     "reference" : "Eiw5LzUwIE1hcmtldCBTdHJlZXQsIE1lbGJvdXJuZSBWSUMsIEF1c3RyYWxpYSIwEi4KFAoSCR3TztZMXdZqEREXsZzx5CRAEDIqFAoSCXUvVtBMXdZqEc9Cc6QFzzMr",
     "structured_formatting" : {
        "main_text" : "9/50 Market Street",
        "main_text_matched_substrings" : [
           {
              "length" : 18,
              "offset" : 0
           }
        ],
        "secondary_text" : "Melbourne VIC, Australia"
     },
     "terms" : [
        {
           "offset" : 0,
           "value" : "9/50 Market Street"
        },
        {
           "offset" : 20,
           "value" : "Melbourne"
        },
        {
           "offset" : 30,
           "value" : "VIC"
        },
        {
           "offset" : 35,
           "value" : "Australia"
        }
     ],
     "types" : [ "route", "geocode" ]
  }

由于某种原因,当使用场所详细信息API并返回street_address时,谷歌地图会删除子权限信息。

有没有办法强制Google Maps API向我返回子前提的详细信息?

1 个答案:

答案 0 :(得分:1)

示例中的Eis1MCBNYXJrZXQgU3QsIE1lbGJvdXJuZSBWSUMgMzAwMCwgQXVzdHJhbGlhIjASLgoUChIJHdPO1kxd1moRERexnPHkJEAQMioUChIJdS9W0Exd1moRz0JzpAXPMys之类的长地ID表示Google数据库中没有确切的街道地址供您搜索。这是一个近似值。当您搜索数据库中存在的地址时,您将获得较短的位置ID(例如ChIJrTLr-GyuEmsRBfy61i59si0)。

如果Google数据库中不存在该地址,则可以从自动完成服务中获取一个长位置ID,并从位置详细信息端点获取另一个长位置ID。这些端点可以使用不同的算法进行近似,从而为数据库中找不到的地址产生不同的位置ID。

文档中提到了两种类型的场所ID https://developers.google.com/places/place-id#id-overview

解决此问题最直接的方法是按照以下步骤向Google数据小组报告地址丢失的情况 https://support.google.com/maps/answer/6320846

一旦添加到Google数据库中,您的问题就会消失,您会在自动完成和详细信息中获得一个简短的位置ID。

您的问题还可能与Google问题跟踪器中报告的有关就地自动完成服务的部分支持有限的错误有关。看看

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

我希望这能解决您的疑问。