Как нормализовать название города из множества похожих имен

Я получаю название города от стороннего API. Этот API не возвращает нормализованное название города. Например, иногда его San Franciscoкогда-нибудь San Francisco, CAиногда его San Francisco, USA, Мне не нужны адреса улиц и т. Д. Мне просто нужно нормализовать название города, чтобы оно было единообразным. Я ищу услугу, которая могла бы помочь мне с этим требованием.

PS: это не мобильное приложение, его веб-приложение и местоположение не из браузера.

2 ответа

Вы можете использовать API Карт Google, чтобы получить нормализованный адрес:

1) Получите результат от: https://maps.googleapis.com/maps/api/geocode/json?address=san_francisco

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "San Francisco",
               "short_name" : "SF",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Condado San Francisco",
               "short_name" : "Condado San Francisco",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Estados Unidos",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "San Francisco, California, EE. UU.",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 37.9298239,
                  "lng" : -122.28178
               },
               "southwest" : {
                  "lat" : 37.6398299,
                  "lng" : -123.173825
               }
            },
            "location" : {
               "lat" : 37.7749295,
               "lng" : -122.4194155
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.812,
                  "lng" : -122.3482
               },
               "southwest" : {
                  "lat" : 37.70339999999999,
                  "lng" : -122.527
               }
            }
         },
         "place_id" : "ChIJIQBpAG2ahYAR_6128GcTUEo",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}

2) Извлечь название города из $data['results'][0]['address_components'][0]['long_name'],

Вы должны убедиться, что возвращаемый контент содержит описанные поля и $data['status'] "ОК".

Источник: https://developers.google.com/maps/documentation/geocoding/intro

Если это соответствует названиям городов, вы можете отсканировать строку и проверить, есть ли запятая, и игнорировать ли что-либо после

Другие вопросы по тегам