MapLibre GL JS 6.16 исправляет восстановление карт на мобильных устройствах

MapLibre GL JS 6.16 исправляет восстановление карт на мобильных устройствах
Содержание статьи

25 октября вышла стабильная версия MapLibre GL JS 6.16.0. Библиотека рисует интерактивные карты в браузере с помощью WebGL. Среди изменений есть исправления для мобильных устройств: карта могла перестать загружаться после завершения фонового обработчика или остаться растянутой из одного пикселя. На Mentoring.digital разбираем, какие сценарии стоит проверить после обновления.

Карта восстанавливается после потери фонового обработчика

На iOS система может завершить worker, когда веб-приложение находится в фоне. Worker выполняет часть работы карты отдельно от основного потока страницы. Исправление в 6.16 проверяет его доступность при возвращении приложения на экран и перезапускает неответившие обработчики, после чего восстанавливает стиль карты.

Авторы также устранили утечку ресурсов в управлении пулом workers. Если приложение добавляет собственные слои и обработчики событий отдельных слоёв, их может потребоваться подключить повторно. Поэтому наличие изображения карты после возврата ещё не подтверждает, что все пользовательские действия восстановились.

Исправлен canvas и расширено управление границами

Другое исправление касается изменения размера в промежутке потери WebGL-контекста. В опубликованном отчёте для Chrome на Android canvas карты оставался размером 1 × 1 пиксель, а браузер растягивал его на всю область. Версия 6.16 содержит исправление этого случая.

Кроме мобильных ошибок, в выпуске исправлены повторная загрузка просроченных векторных тайлов с неизменившимся ETag и работа GeoJSON getBounds с пустой геометрией. Через Map#setMaxBounds теперь можно независимо ограничить перемещение по одной географической оси. Параметр transformStyle разрешено передавать при создании карты, а не только через setStyle.

Что проверить в своём приложении

  • Откройте карту на целевых мобильных устройствах, уберите приложение в фон и вернитесь. Проверьте загрузку данных, собственные слои и действия по нажатию.
  • Измените ориентацию и размер области карты. Убедитесь, что canvas сохраняет нормальное разрешение и положение меток.
  • Если используются границы или преобразование стиля, проверьте эти настройки отдельно от сценария возвращения из фона.

Это список проверок для команды, а не результаты испытаний вашей карты. При воспроизведении ошибки полезно сохранить версию браузера, библиотеки и минимальную последовательность действий. Разобрать события страницы и восстановление пользовательского интерфейса можно с наставником по JavaScript.

Похожие статьи по данной теме