Запущен holztour.ch
Всем привет, сегодня небольшой отчёт о только что запущенном проекте holztour.ch.
Это небольшой швейцарский сервис для туристов, чтобы они знали, какие места можно посетить. Туристы смотрят где вкусно кормят, где можно полазить по горам, поспать и всё такое. А владельцы этих заведений выставляют про них информацию по подписке. Этакий туристический 2GIS.
Проект разработан на Vesp, собственно для работы с ним меня и позвали в Pixmill изначально, в конце 2020. Но, в связи с пандемией, интерес к туризму сильно просел, и проект забуксовал.
Тем не менее, 1 апреля 2022 мы его запустили, хоть и не в окончательном варианте. Планируется еще много доработок по функционалу.
Как обычно для управления данными написана собственная админка. Каждая локация - это отдельная запись в таблице, к которой првязана карточка владельца места и галерея.
Картинки можно закидывать пачкой, сортировать перетаскиванием, отключать и удалять ненужные.
Сервис работает не для всей Швейцарии, а только для трёх регионов в самом центре страны: Obwalden, Nidwalden и Haslital.Все активные локации привязываются к одному из регионов и выводятся на общей карте через API сервиса MapBox.
При клике на маркер выводится карточка локации с описанием и галереей.
Отдельной особенностью является вывод соседних точек, расположенных в радиусе 20 километров.
Поиск соседей я добавил прямо в модель Location, работает он через формулы MySQL по координатам точек:
earth = 6371; // радиус планеты в километрах
if ($this->lng && $this->lat) {
$c->where('id', '!=', $this->id); // исключаем текущую модель
// И преминяем формулу, которую написал кто-то поумнее меня
$c->havingRaw("
$earth * acos(cos(radians($this->lat)) * cos(radians(lat)) * cos(radians(lng)
- radians($this->lng)) + sin(radians($this->lat)) * sin(radians(lat))) <= $distance
");
}Сайт является типичным SPA, все страницы выводятся без перезагрузки. Но как видно по картинкам, карточки локаций показываются модальными окнами, поэтому при перемещении по ним позиция на карте никак не меняется.
Есть сохранение локаций в избранное. Авторизацию и личный кабинет пока не делали, поэтому избранное хранится в LocalStorage браузера.
В наличии и мощный фильтр, который позволяет искать места по названию и характеристикам. Фильтруется всё на стороне клиента, через Vuex, никаких дополнительных запросов на сервер.
В локациях могут проходить разные мероприятия, поэтому есть и фильтр по датам.
На данный момент реализовано примерно 75% планируемого функционала, дальнейшие работы планируются по мере роста туристической активности. Например, должно быть прокладывание маршрута на карте из одной точки в другую.
Но уже сейчас можно зайти на holztour.ch, покликать по ссылкам и повздыхать по прекрасным видам.
Если есть вопросы - задавайте, с удовольствием расскажу подробности.
0
👍
👎
❤️
🔥
😮
😢
😀
😡
411
04.04.2022 09:53:41