Завершился OpenLayers Mobile Code Sprint, проходивший в швейцарском городе Лозанна с 21 по 25 февраля, в котором приняли участие 16 разработчиков/активных пользователей библиотек OpenLayers и GeoExt. Основной целью мероприятия была работа над расширением возможностей OpenLayers в области поддержки мобильных устройств, а также попытка интеграции OpenLayers с такими библиотеками, как Sencha Touch и JQuery Mobile, наподобие того, как в GeoExt реализовано взаимодействие между OpenLayers и ExtJS (Sencha). Организаторами выступили Camptocamp и Swisstopo, среди спонсоров замечены EPFL, OpenGeo и Nokia.
Кратко с итогом мероприятия можно ознакомиться в следующем документе:
Некоторые нововведения:
- Компоновка каждой страницы с примерами OpenLayers автоматически адаптируется под размер экрана.
- Сводная страница примеров OpenLayers приобрела новый вид, став удобней для пользователей мобильных браузеров.
- С целью сокращения объема передаваемой информации, все таблицы стилей в примерах пропущены через csstidy, модифицированные *.css таблицы будут распространяться начиная со следующего релиза.
- Для браузеров, поддерживающих Geolocation API, добавлен новый контрол Geolocate, позволяющий приложениям, основанным на OpenLayers, легко получать информацию о текущем местоположении пользователя.
- Добавлена поддержка kinetic panning, для этого требуется установить свойство
enableKinetic
контроа DragPan в значениеtrue
. - Добавлен контрол PinchZoom для обработки соответствующего события на мультитач-устройствах.
- Добавлен контрол TouchNavigation для работы с мобильными устройствами.
- Новые примеры, демонстрирующие работу OpenLayers на мобильных устройствах.
Дополнительная информация: day 1 , day 2, day 4 и day 5. Таблица с результатами тестов.
?сточник: OpenLayers Mobile Code Sprint Summary
Спасибо за статью и за “kinetic panning” – встрою в свой проект.
?, как обычно, разбежался…
Kinetic panning не хочет работать с установленным restrictedExtent
http://poix.info/dev/kinetic.html
http://poix.info/dev/kinetic-restrictedExtent.html
Не подскажете, куда писать, чтобы подправили?
Не совсем уловил суть проблемы, при restrictedExtent и обычный Pan себя так ведёт, что вообщем-то и ожидаемо.
Не-не-не.. не так.
restrictedExtent должен только ограничивать навигацию, а он при каждом событии pan (moveend) сбрасывает позицию карты в левый верхний угол (minX, maxY) – вторая ссылка. Я уж не стал писать посты вдогонку, дабы не получился разговор сам-с-собой, но вчера, полазив дебаггером по кодам, выяснил, что проблема не в kinetic, а в функции getCachedCenter() модуля Map.js текущей разрабатываемой версии OL. То есть уйдя от прямого использования this.center, чего-то там разработчики напутали.
Что значит в текущей разрабатываемой версии, той что в транке? А в релизной 2.10 нормально работает? Походу просмотра вашего примера – закинул тикет девелоперам, исправили через 8 минут 🙂 http://trac.osgeo.org/openlayers/changeset/11591
Ой, боюсь, не то они подправили 🙂
Я поменял в своих исходниках ссылку на OL.js на их сайте. Только на ней работает kinetic, но, как я уже писал выше, работает, но не исправно restrictedExtent.
Понятно, что 2.10 kinetic не будет работать, по ссылке: http://openlayers.org/dev/lib/OpenLayers.js самая последняя ревизия. Провел несколько экспериментов – подтверждаю, restrictedExtent работает на релизной 2.10 как надо, в транке – нет.
http://gis-lab.info/share/DR/sandbox/restricted-release.html
http://gis-lab.info/share/DR/sandbox/restricted-trunk.html
Как оказалось, тикет уже завели: http://trac.osgeo.org/openlayers/ticket/3138 Будем следить за ходом развития событий.
Andreas Hocevar сделал патч, идёт тестирование, в транке его пока нет. Я накатил этот патч на последнюю ревизию, результат здесь: http://gis-lab.info/share/DR/sandbox/restricted-patched.html Как можно видеть – restrictedExtent теперь работает корректно, в том числе и в связке с Kinetic panning.
О, отлично, спасибо) Теперь буду ждать финального релиза.
Зашёл сейчас на ваш сайт http://poix.info/ – супер, здорово получилось завязать панорамы и карту! А флешевая часть проекта – это авторская разработка или на основе какой-то библиотеки? Прямо захотелось сделать нечто похожее 🙂 Уверен, что пришлось решать множество различных задач по части OpenLayers, если есть чем поделиться, то можно сюда: http://gis-lab.info/forum/viewforum.php?f=41. Очень не хватает общения по теме OL на родном языке.
Спасибо за отзыв)
Flash-элемент купленный – http://krpano.com. Да, есть бесплатные аналоги, но этот очень неплохо документирован, распространён и хорошо поддерживается.
Вообще, я думаю над созданием полноценной статьи о проекте, и размещении её на вашем ресурсе. Тем более, gis-lab сыграл свою значимую роль в выборе его архитектуры. Есть что рассказать о разработке, и не только по части OL. К сожалению, сейчас нет на это времени, так как оптимизирую и допиливаю функционал.
А пока могу сказать, что ядро клиентской части на OL писали парни из Питера, я дорабатывал процентов 30% её, ибо собственных знаний не хватало. Пока могу сказать, что чтобы расширить внешний вид элементов OL, одними стилями дело не обошлось и пришлось переопределять встроенные классы.
Александр, думаете в правильном направлении!
Закоммитили патч. Попробуйте подключить http://openlayers.org/dev/OpenLayers.js. Должно работать.
В принципе, работает, но опять со своими огрехами в плане рендеринга 🙂 К restrictedExtent это не относится. На слое XYZ (==OSM) поздно происходит рендеринг карты (происходит только на событие “moveend”). В то время как на версии http://openlayers.org/api/2.10/OpenLayers.js – всё нормально. Естественно, в обоих случаях карта успешно кэшируется браузером и установлена буферизация тайлов слоя.
Мне надо учиться создавать тикеты. Есть какая-нибудь инструкция по этому делу? Жёстко-ли там регламентирована установка полей Type, Component, Priority ?
Тикеты это просто. Вот небольшое описание http://trac.osgeo.org/openlayers/wiki/FilingTickets
А можете поподробнее изложить суть проблемы? Поднял два примера с релизной и транковой версией библиотеки – на первый взгляд всё одинаково:
http://gis-lab.info/share/DR/sandbox/osm-release.html
http://gis-lab.info/share/DR/sandbox/osm-trunk.html
to _DR_
Во втором примере, когда перемещаете карту, сначала появляется пустое белое пространство. Когда заканчиваете движение мышью, то срабатывает moveend, и карта (содержимое контейнера) перерисовывается, хотя по характеру перерисовки видно, что тайлы уже были подгружены.
В первом (релизном) примере никаких белых областей не появляется, что и нужно.
Это потому, что в транке поменяли значение буфера с 2 на 0. ?змените размер буфера слоя, должно помочь. Например так: layer = new OpenLayers.Layer.OSM(“Simple OSM Map”,null,{buffer:2}); или уже после создания слоя layer.buffer = 2. Пример: http://gis-lab.info/share/DR/sandbox/osm-trunk.html
А вот странное дело 🙂
Вчера с модулем http://openlayers.org/dev/lib/OpenLayers.js и установленным {buffer: 2} в конструкторе слоя, не работало. Я про это и писал: “…установлена буферизация тайлов слоя”. Сейчас – работает)
Как написали ребята в рассылке, чтобы повторить функциональность версии 2.10, нужно задать следующие значения: {buffer: 2, tileLoadingDelay: 0}, в текущем варианте они равны 0 и 100 соответственно.