Создать API-сервис, который по переданным координатам (широта/долгота) определяет, на территории какой страны находится точка, и возвращает максимально полную информацию об этой стране. Сервис должен:
- Определять страну по координатам с высокой точностью (использовать полигоны границ)
- Возвращать более 30 полей информации о стране:
- Основные: название, официальное название, столица, регион, субрегион
- Географические: площадь, координаты страны, граничащие страны
- Лингвистические: название на разных языках, языки населения
- Культурные: религии, демонимы (названия жителей)
- Технические: код страны (ISO 3166-1 alpha-2/3), автомобильный код, домен, телефонный код
- Административные: формат почтовых индексов, регулярное выражение для проверки
- Визуальные: флаг, иконка
- Временные: часовые пояса
- Экономические: валюта, рейтинг сайта
- Международные: организации, в которых состоит страна
Создал модульный REST API на Symfony с использованием геоданных:
/src/
├── Controller/
│ └── Api/
│ └── CountryByCoordinatesController.php # Основной эндпоинт
├── Service/
│ ├── CountryDetection/
│ │ ├── PolygonDetector.php # Определение по полигонам
│ │ └── CountryDataProvider.php # Данные о странах
│ ├── Geo/
│ │ └── CoordinateValidator.php # Валидация координат
│ └── Token/
│ └── TokenValidator.php # Проверка токенов
├── Entity/
│ ├── Country.php # Сущность страны
│ ├── CountryData.php # Расширенные данные
│ └── ApiToken.php
├── Repository/
│ ├── CountryRepository.php
│ └── ApiTokenRepository.php
└── DataFixtures/
└── CountryFixtures.php
Технические результаты
✅ API определяет страну по координатам с высокой точностью (через полигоны)
✅ Возвращает более 30 полей информации о стране
✅ Поддержка многоязычных названий
✅ Детальная информация о часовых поясах (с учетом регионов)
✅ Данные о граничащих странах в удобном формате
✅ Валидация координат и обработка ошибок
✅ Система токенов (демо + персональные)
✅ Интеграция с PostGIS для быстрого поиска
Для пользователей
✅ Простой API с понятными эндпоинтами
✅ Демо-доступ для тестирования
✅ Подробная документация всех полей
✅ Примеры на PHP в документации
✅ Регистрация для получения постоянного токена