PlaceId для subpremise - PullRequest
       16

PlaceId для subpremise

0 голосов
/ 18 января 2019

Почему я получаю ответ с другим идентификатором 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" ]
  }

По какой-то причине карты Google отбрасывают информацию о подгруппе, используя API сведений о месте и возвращая уличный адрес.

Есть ли способ заставить API карт Google возвращать мне данные для этого подпредприятия?

1 Ответ

0 голосов
/ 21 января 2019

Длинный идентификатор места, такой как Eis1MCBNYXJrZXQgU3QsIE1lbGJvdXJuZSBWSUMgMzAwMCwgQXVzdHJhbGlhIjASLgoUChIJHdPO1kxd1moRERexnPHkJEAQMioUChIJdS9W0Exd1moRz0JzpAXPMys в вашем примере, означает, что в базе данных Google нет точного адреса улицы для вашего поиска. Это приближение. При поиске адреса, который существует в базе данных, вы получите более короткий идентификатор места (например, ChIJrTLr-GyuEmsRBfy61i59si0).

Если адрес не существует в базе данных Google, вы можете получить один длинный идентификатор места в службе автозаполнения и другой длинный идентификатор места в конечной точке сведений о месте. Эти конечные точки могут использовать разные алгоритмы для приближений, которые приводят к различным идентификаторам мест для адресов, которые не найдены в базе данных.

Оба типа идентификаторов мест указаны в документации https://developers.google.com/places/place-id#id-overview

Самый простой способ устранить проблему - сообщить об отсутствующем адресе в группу данных Google, как описано в https://support.google.com/maps/answer/6320846.

После добавления в базу данных Google ваша проблема исчезнет, ​​вы получите короткий идентификатор места как в автозаполнении, так и в деталях.

Также ваша проблема может быть связана с ошибкой, обнаруженной в системе отслеживания проблем Google в отношении ограниченной поддержки службы автозаполнения на месте. Посмотрите на

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

Надеюсь, это решит ваши сомнения.

...