-
Notifications
You must be signed in to change notification settings - Fork 3
Layout: maps
Удобно, когда карту можно перемещать. Удобно это делать мышкой, не менее удобно делать это swipe'ом. Но когда карта не является единственным элементом на странице, то swipe по карте заменяет скролл страницы. Таким образом, когда карта занимает весь экран, т.е. является достаточно большой, мы теряем возможность скролла и «застреваем» в ней. Возможные варианты решения:
При таком подходе карта будет работать по сути картинкой, с которой нельзя ничего сделать, но мы получаем обратно наш скролл. Проблемы данного решения:
- Невозможно точно определить, является ли устройство действительно touch-девайсом. Например, на тестирование
Modernirz.touch
мобильный IE отдаетfalse
. - Некоторые десктопы могут иметь touch.
- Проверка, является ли устройство «мобильным» с помошью библиотек типа ua-parser-js или регулярных выражений также не точна и очень сильно зависит от обновления этих самых библиотек.
- Теоретически возможно смотреть ширину экрана, но изменение верстки mobile/tablet/desktop определяется в css и к js не имеет отношения по большому счету, не хотелось бы в js завязываться на размер экрана
- Отключение drag'а на mobile IE в Google Maps не влияет на scroll, его нет вне зависимости от этой настройки
Вместо drag'а мы можем добавлять контролы смещения/zoom'а, хотя они не самые красивые и удобные для использования на телефоне, например.
Как минимум для планшетов / телефонов. Видится оптимальным решением поскольку при таком подходе отпадает нужда в скролле. Но в этом случае
- На карте нужна кнопка закрытия
- Нужна кнопка открытия карты, видимая только на устройствах
- Фильтры (например, инфраструктура или переключение центра карты в зависимости от объекта) должны располагаться поверх карты, либо по нажатию открывать карту с уже отфильтрованными объектами. Возможно, стоит убирать фильтры для мобильной версии вовсе, а может быть и сами карты.
Это решение работает с помощью исключительно css, что неплохо, но
- Мы теряем возможность выводить динамические данные из админки
- Фильтры нужно или убрать (если они есть) или делать по картинке на каждый фильтр. Теоретически можно подменять балуны с помощью js, но это уже затратно и не надежно
Т.е. вариант вполне приемлимый при указанных выше ограничениях.