Сценарий работы такой. Гость открывает страницу, система предлагает определить его местоположение либо он сам вписывает адрес в строку поиска — и тут же на живой карте появляются ближайшие точки. Если магазины расположены кучно, маркеры должны объединяться в кружок с цифрой и раскрываться по мере приближения, чтобы центр крупного города не превращался в мешанину меток. Переключатель радиуса (скажем, 5, 10 и 25 километров) сокращает список, при этом панель результатов сбоку остаётся связанной с картой: нажатие на элемент списка выделяет метку и в обратную сторону тоже. У каждой точки — понятная карточка с названием, полным адресом, графиком работы, телефоном и кнопкой прокладки маршрута в навигаторе посетителя.
Адреса и данные мы будем загружать из таблицы или небольшой панели управления и обновлять их своими силами, без правки исходников, поэтому список точек должен подключаться через настройки, а не быть прописанным в коде. Преобразование адресов в координаты допустимо выполнять заранее с сохранением в кэш. Для меня принципиальны быстрая загрузка, удобство на мобильных, доступность интерфейса и бережный расход лимитов картографического сервиса. Вариант на Leaflet с открытыми тайлами меня устраивает; предложите иное решение — обоснуйте выбор.
— Встраиваемый раздел карты в оформлении сайта, адаптивный под любые экраны
— Строка поиска по адресу и запрос геолокации браузера для центровки
— Переключатель радиуса и список точек, связанный с метками в обе стороны
— Объединение близких меток в кластеры с плавным раскрытием при масштабировании
— Карточки магазинов: название, адрес, режим работы, телефон, маршрут
— Обновляемый список точек (таблица или простая панель) и кэш координат