Web-сервис прямого и обратного геокодирования "GeocodingService"
Небходимые ПО
- Docker
- Postman
- IntelliJ IDEA (в случае необходимости)
Используемые технологии
- Java
- Spring Boot
- Maven
- Redis (для кэширования)
https://docs.2gis.com/ru/api/search/geocoder/overview
Интеграция внешнего API: электронный справочник карт "2GIS" (Geocoder API): Инструкция по запуску приложения
-
В директории проекта выполнить следующие команды:
-
Сборка проекта maven:
./mvnw package
-
Запуск приложения (в случае необходимости):
java -jar target/GeocodingService-0.0.1-SNAPSHOT.jar
-
-
Создание образа Docker:
docker build -t geocoding-service-docker:0.1.0 .
-
Запуск контейнера Docker:
docker run -p 8080:8080 geocoding-service-docker:0.1.0 .
Инструкция по работе с приложением
- Для выполнения прямого геокодирования, следует выполнить следующий GET запрос:
localhost:8080/api/geocoder
При этом в тело запроса передать адрес в формате JSON:
{
"address": "Адрес"
}
- Для выполнения обратного геокодирования, следует выполнить следующий GET запрос:
localhost:8080/api/geocoder
При этом в тело запроса передать координаты в формате JSON:
{
"lat": Значение широты,
"lon": Значение долготы
}
Результаты работы приложения
- Прямое геокодирование:
Полученный ответ (Response):
{
"result": {
"items": [
{
"building_name": "Воронежский государственный технический университет (ВГТУ)",
"full_name": "Воронеж, Воронежский государственный технический университет (ВГТУ)",
"purpose_name": "ВУЗ",
"name": "Воронежский государственный технический университет (ВГТУ)",
"address_name": "20-летия Октября, 84",
"id": "4363497794194056",
"type": "building",
"point": {
"lat": 51.652127,
"lon": 39.192714
}
}
],
"total": "1"
}
}
- Обратное геокодирование:
Полученный ответ (Response):
{
"result": {
"items": [
{
"building_name": "Воронежский государственный технический университет (ВГТУ)",
"full_name": "Воронеж, Воронежский государственный технический университет (ВГТУ)",
"purpose_name": "ВУЗ",
"name": "Воронежский государственный технический университет (ВГТУ)",
"address_name": "20-летия Октября, 84",
"id": "4363497794194056",
"type": "building",
"point": {
"lat": 51.652127,
"lon": 39.192714
}
},
{
"full_name": "Воронеж, Ленинский",
"subtype": "district",
"name": "Ленинский",
"id": "4363472024371202",
"type": "adm_div",
"point": {
"lat": 51.640025,
"lon": 39.194786
}
},
{
"full_name": "Воронеж",
"subtype": "city",
"name": "Воронеж",
"id": "4363484909273106",
"type": "adm_div",
"point": {
"lat": 51.660548,
"lon": 39.199775
}
},
{
"full_name": "Воронеж городской округ",
"subtype": "district_area",
"name": "Воронеж городской округ",
"id": "70030076118167065",
"type": "adm_div",
"point": {
"lat": 51.61521,
"lon": 39.193904
}
},
{
"full_name": "Воронежская область",
"subtype": "region",
"name": "Воронежская область",
"id": "1267655302447150",
"type": "adm_div",
"point": {
"lat": 51.134329,
"lon": 40.022274
}
}
],
"total": "5"
}
}
- Реализация кэширования (Redis): при повторном выполнении одинакового запроса время ответа значительно сокращается: