Как нормализовать название города из множества похожих имен
Я получаю название города от стороннего 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
Если это соответствует названиям городов, вы можете отсканировать строку и проверить, есть ли запятая, и игнорировать ли что-либо после