Кроме модульности и рефакторинга важную роль сыграла замена базовой библиотеки (в API карт 1.0 использовался OpenLayers, который более тяжеловесный чем Leaflet).
Для нанесения трасс на карту можно воспользоваться геометриями, в частности ломаными. В качестве формата хранения данных можно использовать WKT. В API карт 2GIS есть компонент, который умеет принимать на вход описание геометрий в WKT-формате и потом показывать эту геометрию на карте, вот пример: api.2gis.ru/doc/maps/manual/wkt/#toc-dgwktparser-m-5
Leaflet хорош :) beta.2gis.ru сейчас работает на бета-версии API карт, который обеспечивает картографические фичи 2GIS (например, отображение входов в здания и отслеживание курсора над POI).
В целом, можем подтвердить все преимущества, которые описал Владимир (автор leaflet-а) в этом докладе, всё правда :)
В таком случае необходимо будет отправлять дополнительные запросы и загружать отдельно тайлы и отдельно геометрии зданий при драге карты. Есть сомнения, что это стоит делать.
«Допилинг» нужен, однозначно. Пример реализации не стоит рассматривать как окончательно готовое и единственно правильное решение, пример лучше рассматривать в обучающих целях, для реализации подобных задач в своих проектах. Для полноценного решения в OL3 было бы неплохо дождаться «устаканивания» основных «классов» библиотеки.
Действительно, этот кейс в статье не учтен. В API карт 2GIS-а мы считаем дистанцию (и, как следствие, импульс) не всего пути drag-а, а лишь последнего отрезка пути. Последний отрезок пути считаем исходя из разницы координат последнего события DgDrag и события DgDragStop.
Более того, если импульс очень маленький, тогда вообще нет смысла инерционно передвигать карту, мы запускаем инерцию только в том случае, если импульс больше определенной константы.
Так как список докладов и докладчиков ещё окончательно не сформирован, думаю, в комментариях к этому посту можно высказать свои пожелания о том, что хотелось бы послушать, возможно это будет полезно для тех, кто хотел бы выступить, но ещё не определился с темой.
Наверное программировать и при этом не писать хороший код сложновато будет.
По поводу книги — а какую бы Вы посоветовали «серебрянную пулю программирования 21 века»?
Думаю, что стоит отметить одну особенность браузера FF 3.6.13 + кроссдоменное решение от Дмитрия.
Если есть переходы внутри фрейма, тогда после нескольких переходов, в списке top.frames будут доступны все фреймы, по которым прошелся пользователь, а потому, во время «простукивания» возможных высот в цикле будет учитываться самый маленький по высоте фрейм.
Смотрел еще в:
Opera 11.00 — все ok;
Chrome 8.0.552.224 — все ok.
Комментарий из публикации, перенесённой в черновики.