Google Places API - неверные результаты "place_id" при поиске сведений о месте - PullRequest
0 голосов
/ 01 мая 2018

Я искал возможные решения или подтверждение по вопросу, при котором запрос по place_id возвращается из Google Autocomplete API результаты не соответствуют службе сведений о месте.

Пример со строкой запроса - 44 London Road, Севеноукс, TN131A

Запрос на автозаполнение API:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=44%20London%20Road,%20Sevenoaks,%20TN131A&types=address&components=country:uk&key=KEY

Результат:

{
    "predictions": [
        {
            "description": "44 London Road, Sevenoaks TN13 1AS, UK",
            "id": "a68cc04956c7d845e7ecf4310ab7e37c8b1726bc",
            "matched_substrings": [
                {
                    "length": 14,
                    "offset": 0
                },
                {
                    "length": 8,
                    "offset": 26
                }
            ],
            "place_id": "EiY0NCBMb25kb24gUm9hZCwgU2V2ZW5vYWtzIFROMTMgMUFTLCBVSw",
            "reference": "CjQqAAAAO-BUieTtItdrzdJeUH3XgoqPQDQkb8adId4-OgGtQ69p1xImSYbX9cOIutz64vodEhApHwR2GWECK1--3E9m3Jz-GhQQBNtahApp19gUfuIWJLESCavJfw",
            "structured_formatting": {
                "main_text": "44 London Road",
                "main_text_matched_substrings": [
                    {
                        "length": 14,
                        "offset": 0
                    }
                ],
                "secondary_text": "Sevenoaks TN13 1AS, UK",
                "secondary_text_matched_substrings": [
                    {
                        "length": 8,
                        "offset": 10
                    }
                ]
            },
            "terms": [
                {
                    "offset": 0,
                    "value": "44 London Road"
                },
                {
                    "offset": 16,
                    "value": "Sevenoaks"
                },
                {
                    "offset": 26,
                    "value": "TN13 1AS"
                },
                {
                    "offset": 36,
                    "value": "UK"
                }
            ],
            "types": [
                "route",
                "geocode"
            ]
        }
    ],
    "status": "OK"
}

Результаты, возвращаемые функцией автозаполнения, - это те, которые я ожидаю
1) Один результат
2) Описание адреса содержит правильный полный адрес с почтовым индексом TN13 1AS

Теперь, когда я беру place_id и запрашиваю информацию о месте, я ожидаю более детальную информацию об адресе. Однако я получаю адрес, похожий на адрес автозаполнения, но с другим почтовым индексом, который не совпадает с исходным результатом.

Запрос на размещение информации API:

https://maps.googleapis.com/maps/api/place/details/json?placeid=EiY0NCBMb25kb24gUm9hZCwgU2V2ZW5vYWtzIFROMTMgMUFTLCBVSw&key=KEY

Результат:

    {
    "html_attributions": [],
    "result": {
        "address_components": [
            {
                "long_name": "44",
                "short_name": "44",
                "types": [
                    "street_number"
                ]
            },
            {
                "long_name": "London Road",
                "short_name": "London Rd",
                "types": [
                    "route"
                ]
            },
            {
                "long_name": "Dunton Green",
                "short_name": "Dunton Green",
                "types": [
                    "locality",
                    "political"
                ]
            },
            {
                "long_name": "Sevenoaks",
                "short_name": "Sevenoaks",
                "types": [
                    "postal_town"
                ]
            },
            {
                "long_name": "Kent",
                "short_name": "Kent",
                "types": [
                    "administrative_area_level_2",
                    "political"
                ]
            },
            {
                "long_name": "England",
                "short_name": "England",
                "types": [
                    "administrative_area_level_1",
                    "political"
                ]
            },
            {
                "long_name": "United Kingdom",
                "short_name": "GB",
                "types": [
                    "country",
                    "political"
                ]
            },
            {
                "long_name": "TN13 2UG",
                "short_name": "TN13 2UG",
                "types": [
                    "postal_code"
                ]
            }
        ],
        "adr_address": "<span class=\"street-address\">44 London Rd</span>, <span class=\"extended-address\">Dunton Green</span>, <span class=\"locality\">Sevenoaks</span> <span class=\"postal-code\">TN13 2UG</span>, <span class=\"country-name\">UK</span>",
        "formatted_address": "44 London Rd, Dunton Green, Sevenoaks TN13 2UG, UK",
        "geometry": {
            "location": {
                "lat": 51.2914523,
                "lng": 0.1679203
            },
            "viewport": {
                "northeast": {
                    "lat": 51.29279178029149,
                    "lng": 0.169216380291502
                },
                "southwest": {
                    "lat": 51.2900938197085,
                    "lng": 0.166518419708498
                }
            }
        },
        "icon": "https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
        "id": "9e62665526d3d76deb1d04b508d3afb273a6415b",
        "name": "44 London Rd",
        "place_id": "ChIJ77ZF32hS30cRvP2Kbxo9Eqc",
        "reference": "CmRbAAAAC1pl4PwpN5mzt1MNHaUsxP9tnaaAEwBtJNi1MasmPV12-itLnnDGk8QMeoKHaeJw1mIfYvO6AWXaIZ94OEGsLAzwuOfNG_8Klza0ScrVe1U9DbOv1RyAyGh2bAQuG03zEhBEfrvBLZjXbIyMJHraFobWGhR1wJVnsIfPIwVhqpj2w2x-NIdCSg",
        "scope": "GOOGLE",
        "types": [
            "street_address"
        ],
        "url": "https://maps.google.com/?q=44+London+Rd,+Dunton+Green,+Sevenoaks+TN13+2UG,+UK&ftid=0x47df5268df45b6ef:0xa7123d1a6f8afdbc",
        "utc_offset": 60,
        "vicinity": "Dunton Green"
    },
    "status": "OK"
}

Как вы можете видеть, почтовый индекс, возвращаемый из информации о месте: TN13 2UG , а не TN13 1AS , как в оригинальном предложенном адресе.

Кроме того, различия между предлагаемым адресом и адресом детали места заключаются в следующем:
автозаполнение : 44 London Road, Sevenoaks TN13 1AS, Великобритания
информация о месте : Лондон Лондон Роуд, Дантон Грин, Севеноукс TN13 2UG, Великобритания

Мой вопрос здесь - я что-то упускаю при запросе подробных сведений о месте? Должен ли я использовать другой подход при поиске деталей адреса?
Или, возможно, это известная проблема, поскольку все сведения о месте не синхронизированы и, скорее всего, будут аналогичны другим результатам поиска.


ОБНОВЛЕНИЕ:

Этот вопрос получил большой жирный дубликат с надписью https://issuetracker.google.com/issues/78900692.
Ссылочный дубликат выпуска можно увидеть здесь: https://issuetracker.google.com/issues/35823492

Короче говоря - да, есть проблема. Да, они работают над этим. Нет, ETA нет.

1 Ответ

0 голосов
/ 02 мая 2018

Вы используете неправильный идентификатор места для вашего входного запроса. Ожидается, что результаты сведений о месте для автозаполнения и сведений о месте будут отличаться. После проверки вашего местоположения ввода в вашем первом запросе правильный идентификатор места: ChIJB5CTmvlN30cR5R2FxZO5_88

Проверьте следующие запросы:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=44%20London%20Road,%20Sevenoaks,%20TN131A&types=address&components=country:uk&key=API_KEY

https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJB5CTmvlN30cR5R2FxZO5_88&key=API_KEY

Оба эти запроса возвращают одинаковые результаты, потому что местоположение и идентификатор места совпадают.

...