GIS-LAB

Географические информационные системы и дистанционное зондирование

Итоги OpenLayers Mobile Code Sprint

Denis Rykov, 28.02.2011

Завершился 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

Комментарии (21) к статье “Итоги OpenLayers Mobile Code Sprint”

  1. Спасибо за статью и за «kinetic panning» — встрою в свой проект.

  2. И, как обычно, разбежался…
    Kinetic panning не хочет работать с установленным restrictedExtent
    http://poix.info/dev/kinetic.html
    http://poix.info/dev/kinetic-restrictedExtent.html
    Не подскажете, куда писать, чтобы подправили?

    • _DR_:

      Не совсем уловил суть проблемы, при restrictedExtent и обычный Pan себя так ведёт, что вообщем-то и ожидаемо.

      • Не-не-не.. не так.
        restrictedExtent должен только ограничивать навигацию, а он при каждом событии pan (moveend) сбрасывает позицию карты в левый верхний угол (minX, maxY) — вторая ссылка. Я уж не стал писать посты вдогонку, дабы не получился разговор сам-с-собой, но вчера, полазив дебаггером по кодам, выяснил, что проблема не в kinetic, а в функции getCachedCenter() модуля Map.js текущей разрабатываемой версии OL. То есть уйдя от прямого использования this.center, чего-то там разработчики напутали.

        • _DR_:

          Что значит в текущей разрабатываемой версии, той что в транке? А в релизной 2.10 нормально работает? Походу просмотра вашего примера — закинул тикет девелоперам, исправили через 8 минут :) http://trac.osgeo.org/openlayers/changeset/11591

          • Ой, боюсь, не то они подправили :-)
            Я поменял в своих исходниках ссылку на OL.js на их сайте. Только на ней работает kinetic, но, как я уже писал выше, работает, но не исправно restrictedExtent.

    • _DR_:

      Понятно, что 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

    • _DR_:

      Как оказалось, тикет уже завели: http://trac.osgeo.org/openlayers/ticket/3138 Будем следить за ходом развития событий.

  3. _DR_:

    Andreas Hocevar сделал патч, идёт тестирование, в транке его пока нет. Я накатил этот патч на последнюю ревизию, результат здесь: http://gis-lab.info/share/DR/sandbox/restricted-patched.html Как можно видеть — restrictedExtent теперь работает корректно, в том числе и в связке с Kinetic panning.

    • О, отлично, спасибо) Теперь буду ждать финального релиза.

      • _DR_:

        Зашёл сейчас на ваш сайт http://poix.info/ — супер, здорово получилось завязать панорамы и карту! А флешевая часть проекта — это авторская разработка или на основе какой-то библиотеки? Прямо захотелось сделать нечто похожее :) Уверен, что пришлось решать множество различных задач по части OpenLayers, если есть чем поделиться, то можно сюда: http://gis-lab.info/forum/viewforum.php?f=41. Очень не хватает общения по теме OL на родном языке.

        • Спасибо за отзыв)
          Flash-элемент купленный — http://krpano.com. Да, есть бесплатные аналоги, но этот очень неплохо документирован, распространён и хорошо поддерживается.
          Вообще, я думаю над созданием полноценной статьи о проекте, и размещении её на вашем ресурсе. Тем более, gis-lab сыграл свою значимую роль в выборе его архитектуры. Есть что рассказать о разработке, и не только по части OL. К сожалению, сейчас нет на это времени, так как оптимизирую и допиливаю функционал.
          А пока могу сказать, что ядро клиентской части на OL писали парни из Питера, я дорабатывал процентов 30% её, ибо собственных знаний не хватало. Пока могу сказать, что чтобы расширить внешний вид элементов OL, одними стилями дело не обошлось и пришлось переопределять встроенные классы.

      • _DR_:

        Закоммитили патч. Попробуйте подключить http://openlayers.org/dev/OpenLayers.js. Должно работать.

  4. to _DR_
    Во втором примере, когда перемещаете карту, сначала появляется пустое белое пространство. Когда заканчиваете движение мышью, то срабатывает moveend, и карта (содержимое контейнера) перерисовывается, хотя по характеру перерисовки видно, что тайлы уже были подгружены.
    В первом (релизном) примере никаких белых областей не появляется, что и нужно.

    • _DR_:

      Это потому, что в транке поменяли значение буфера с 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} в конструкторе слоя, не работало. Я про это и писал: «…установлена буферизация тайлов слоя». Сейчас — работает)

        • _DR_:

          Как написали ребята в рассылке, чтобы повторить функциональность версии 2.10, нужно задать следующие значения: {buffer: 2, tileLoadingDelay: 0}, в текущем варианте они равны 0 и 100 соответственно.

Оставьте комментарий


(Геокруг)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter