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. aesapronov says:

    Спасибо за статью и за “kinetic panning” – встрою в свой проект.

  2. aesapronov says:

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

    • _DR_ says:

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

      • aesapronov says:

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

        • _DR_ says:

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

          • aesapronov says:

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

    • _DR_ says:

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

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

  3. _DR_ says:

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

    • aesapronov says:

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

      • _DR_ says:

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

        • aesapronov says:

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

      • _DR_ says:

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

        • aesapronov says:

          В принципе, работает, но опять со своими огрехами в плане рендеринга :-) К restrictedExtent это не относится. На слое XYZ (==OSM) поздно происходит рендеринг карты (происходит только на событие “moveend”). В то время как на версии http://openlayers.org/api/2.10/OpenLayers.js – всё нормально. Естественно, в обоих случаях карта успешно кэшируется браузером и установлена буферизация тайлов слоя.
          Мне надо учиться создавать тикеты. Есть какая-нибудь инструкция по этому делу? Жёстко-ли там регламентирована установка полей Type, Component, Priority ?

  4. aesapronov says:

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

    • _DR_ says:

      Это потому, что в транке поменяли значение буфера с 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

      • aesapronov says:

        А вот странное дело :-)
        Вчера с модулем http://openlayers.org/dev/lib/OpenLayers.js и установленным {buffer: 2} в конструкторе слоя, не работало. Я про это и писал: “…установлена буферизация тайлов слоя”. Сейчас – работает)

        • _DR_ says:

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

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


(Геокруг)

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