Как сделать навигацию по торговому центру удобной? Какие инструменты доступны разработчику, обзор сильных и слабых сторон основных технологий.
– map vs SVG vs Яндекс.Карты/Google.Maps
– SVG и IE
– Что же выбрать в итоге?
4. Почему интерактивные?
1. Реагируют на поведение пользователя
2. Возможен поиск по карте
3. Могут подстраиваться под особенности экрана пользователя
4. Информацию на карте можно менять без участия специалистов
4
5. Требования
1. Максимальный охват браузеров и OS
2. Высобкая скорость работы (реакция на действия пользователя)
3. Удобный и привычный интерфейс
4. Сокращение времени на разработку и поддержку
5
7. <img> + <map>
1. Очень высокая производительность
2. Просто в реализации
3. Сложно выстрелить себе в ногу
4. Отличная поддержка браузерами
7
8. <img> + <map>
1. Сложности с адаптивом
2. Дисплеи повышенность четкости
3. Органичения на манипуляции с картой
4. Резкое повышение трудоемкости при незначительном увеличении
сложности
8
14. SVG, Canvas
1. Raphael.js
2. excanvas.js
Получаем VML в старых IE
Получаем проблемы с производительностью
14
15. Raphael.js (http://raphaeljs.com/)
• Автоматически конвертировать в Raphael.js можно не все директивы
SVG
• То, что сконвертировано - работает даже на мобильных платформах (с
исключениями)
• Из ~800кб SVG файла получаем 2.5Мб js кода
• За это получаем API для работы с тем, что нагенерировано
15
18. Оптимизация до того, как все плохо
• Проанализировать картинку
• Отбросить статические элементы
• Отказаться от нестандартных шрифтов (?)
• Не переводить шрифты в кривые
• Все что только возможно перевести в растр
18
19. Оптимизация до того как все плохо
Иначе
1. Эти точки нужно описать кодом на js
2. Этот код все равно нужно грузить клиенту
3. Эти точки нужно отрисовать браузеру
19
23. Главный цикл браузера. Основной поток
• Занимается отрисовкой DOM, работой с DOM и обработкой JS
• Один поток
• Обработчики и события выстраиваются в очередь
• Обрабатываются по очереди
• Загрузка и исполнение JS блокирующие
23
24. Оптимизация
1. Всегда использовать preloader
2. Вынести часть кода в ленивую загрузку
3. Использовать псевдомногопоточность SetTimeout 0,
window.setImmediate()
24
27. Что мы получаем?
1. "Богатая" поддерживаемая платформа
2. Обширное API
3. Хороший стек браузеров, в том числе и мобильные
4. Хорошая производительность
5. Имеет доверие у пользователей
27
28. Как работает
1. Фон - растр
2. Карта рисуется и режется на тайлы (прямоугольные области)
3. Поверх основного (рисованного) слоя карты накладываются активные
области
4. Пользователь взаимодействует не с растром, а с активными областями
- ИНТЕРАКТИВНОСТЬ
28
39. Например, Bitrix
• Структура карты хорошо "ложится" с структуру инфоблоков
• Источником данных для карты могут служить json файлы
• Не нужно каждый раз обращаться к данным на сервере
• Данные в json изменяются только по:
• OnAfterIBlockElementAdd
• OnAfterIBlockElementDelete
• OnAfterIBlockElementUpdate
39