Задача
Разработать веб-сервис для поиска сервисных центров в городах России, Украины и Республики Беларусь.
Анализ задачи
Фактически необходимо сделать две больших задачи:
- Произвести интеграцию базы данных сайта с сервисами Google.
- Разработать механизм поиска, фильтрации и вывода данных на картах Google.
Решение
Итак, у пользователей должна быть возможность найти все авторизованные сервисы Schmitz Cargobull — в пределах страны и города. Не каждый сервис предлагает все виды ремонта, поэтому добавляется еще один множественный фильтр: по видам предоставляемых сервисом услуг. И тут начинается самое интересное.
Уровень первый. Глобальная карта
Если в фильтре выбрать только страну — будет ожидаемая глобальная карта с «пинами» (маркеры местоположения). Если нажать на конкретный пин, то появится вот такая карточка:
Полезные особенности:
- В карточке есть информация о видах предлагаемого ремонта в этом сервисе. По видам, как уже было сказано, сервисы можно фильтровать.
- Есть контактные данные сервиса, подтягиваются из базы данных сайта.
- Есть GPS-координаты — удобно для водителей, вбил в навигатор и поехал.
- Возможность «отдалять камеру» ограничена программно (если вы помните, у Google есть особенность выводить повторяющиеся карты при минимальном масштабе).
Уровень второй. Города и маршруты
Теперь выбираем город и виды работ, которые вам нужны, ждем несколько секунд и попадаем на карту. Кроме всего прочего, здесь можно посмотреть маршрут и километраж — от вашего местоположения до выбранного сервисного центра.
А если вдруг в вашем городе нет нужного сервиса — проложить маршрут до ближайшего.
Полезные особенности:
- Как только вы попадаете на сайт — скрипт автоматически делает то самое легендарное «вычисление вас по айпи». То есть сам определяет, из какого вы города и добавляет информацию в фильтр.
- Если выбран конкретный город — масштабирование также программно ограничивается пределами города.
- Множественный фильтр по видам работ: можно добавить несколько видов из выпадающего меню, а потом быстро исключить неактуальные.
- Можно переключаться между режимами спутника и карты.
- Можно выгружать результаты выдачи в Excel и распечатывать карту.
Результат
Итого, имеем полезный сервис, охватывающий сразу три государства, с возможностью поиска авторизованного сервисного центра Schmitz Cargobull. Интерактивный, с глубокой интеграцией сайта с API Google.
Сервис визуально кажется несложным, но на самом деле было проделано очень много работы по его оптимизации. Например, чтобы ускорить работу веб-сервиса, мы не запрашиваем координаты здания у Google, а берем их напрямую из базы данных Битрикса. Во-первых, так быстрее обрабатывается запрос, во-вторых, нет погрешностей Гугла, а, в-третьих, можно задать координаты с высокой точностью — и показать с помощью маркера, например, где вход в сервисный центр.
А еще, если вы заметили, — карта для печати открывается в новом окне, это тоже сделано специально, карта выводится с оптимальными для печати пропорциями.