Как повысить точность при запросе Google Geocode API? - PullRequest
0 голосов
/ 18 декабря 2018

Я работаю над приложением планировщика событий, где мне нужно проверить адрес, введенный пользователем.

В настоящее время меня не волнует ввод неправильного номера двери / единицы или ввода номера единицы, которого не существует.

Я хочу иметь дело только со случаями, когда пользователь вводит общиетакие слова, как Boardroom / Meeting room / etc как местоположение.

Проблема в том, что geocode api не предоставляет ничего для повышения точности.

Следующий api:

https://maps.googleapis.com/maps/api/geocode/json?address=no+location&key=AIz*****bxyiI

имеет адрес, напечатанный как "без местоположения"

Но этот запрос дает результат

{
"results": [
    {
        "address_components": [
            {
                "long_name": "2120",
                "short_name": "2120",
                "types": [
                    "street_number"
                ]
            },
            {
                "long_name": "Main Street",
                "short_name": "Main St",
                "types": [
                    "route"
                ]
            },
            {
                "long_name": "Parsons",
                "short_name": "Parsons",
                "types": [
                    "locality",
                    "political"
                ]
            },
            {
                "long_name": "Labette County",
                "short_name": "Labette County",
                "types": [
                    "administrative_area_level_2",
                    "political"
                ]
            },
            {
                "long_name": "Kansas",
                "short_name": "KS",
                "types": [
                    "administrative_area_level_1",
                    "political"
                ]
            },
            {
                "long_name": "United States",
                "short_name": "US",
                "types": [
                    "country",
                    "political"
                ]
            },
            {
                "long_name": "67357",
                "short_name": "67357",
                "types": [
                    "postal_code"
                ]
            }
        ],
        "formatted_address": "2120 Main St, Parsons, KS 67357, USA",
        "geometry": {
            "location": {
                "lat": 37.340256,
                "lng": -95.268513
            },
            "location_type": "ROOFTOP",
            "viewport": {
                "northeast": {
                    "lat": 37.3416049802915,
                    "lng": -95.26716401970849
                },
                "southwest": {
                    "lat": 37.3389070197085,
                    "lng": -95.26986198029151
                }
            }
        },
        "place_id": "ChIJXQvh_YcauIcRg5p7FuD3Luc",
        "plus_code": {
            "compound_code": "8PRJ+4H Parsons, Kansas, United States",
            "global_code": "86968PRJ+4H"
        },
        "types": [
            "establishment",
            "point_of_interest",
            "store"
        ]
    }
],
"status": "OK"

}

Я пробовал следующие способы:

1) Зависит от пользовательского ввода в этих ситуациях.Если введенный адрес не является действительным, пользователь может пометить событие как общее событие, и это событие не нужно отображать в виде карты.

2) Установите формат, в котором в поле адреса должно быть как минимум номер объекта и номер улицы.Таким образом, если номер не указан в адресе, он не является допустимым.Даже в этом случае 1212 вау-стрит могли дать неожиданные результаты.

Q1) Есть ли общее правило, которому нужно следовать в этих ситуациях?Например, когда предупредить пользователя о неверном местоположении, которое он ввел?

Q2) Есть ли способ улучшить запрос геокодирования?

Из документации Google:

address- Уличный адрес, который вы хотите геокодировать, в формате, используемом национальной почтовой службой соответствующей страны.Следует избегать дополнительных элементов адреса, таких как фирменные наименования и номера единиц, номеров или этажей.

Они указали, как запросить действительный адрес, но ничего не упомянули о точности или проверке адреса.

Я не мог найти другой способ справиться с такими ситуациями.

1 Ответ

0 голосов
/ 20 декабря 2018

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

  • Нет гарантии, что действительный почтовый адрес даст какой-либо результат.
  • Нет гарантии, что неверный почтовый адрес будет исправлен.
  • Нет гарантии, что несуществующий почтовый адрес вернет ровно ноль результатов.

Если вы заинтересованы в проверке форматирования адреса, вам следует рассмотреть другой вариант.Например, что-то вроде SmartyStreets API .

Надеюсь, это поможет!

...