SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0002686SAS.Планета[All Projects] Баг / Bugpublic17-04-2015 19:1725-12-2025 10:23
Reporterzed 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version160707 
Target Version26xxxxFixed in Version26xxxx 
Summary0002686: "Моргает" карта при активной закачке и изменении зума
DescriptionОчень неприятный эффект, когда на долю секунды вся карта исчезает (вместо тайлов серое поле), а потом появляется. По такому случаю даже видео записал: https://yadi.sk/i/3OpWXXXEg4vQo (чтобы посмотреть в нормальном качестве, видео надо скачать).
TagsNo tags attached.
Attached Files

- Relationships
has duplicate 0003923new Map flickers while zooming 

-  Notes
(0015612)
vdemidov (manager)
17-04-2015 20:11

Странно. У меня ничего похожего не наблюдается. Нужно думать.
(0020575)
zed (manager)
21-12-2025 16:47
edited on: 21-12-2025 16:59

Обложил логами процесс отрисовки тайлов и выяснил, что при смене зума дело обстоит так: вначале текущая тайловая матрица несколько раз перерисовывается с растягиванием, потом она "соображает", что нужно взять тайлы со следующего зума, полностью очищается и начинает готовить тайлы с этого нового зума. Тут происходит новая отрисовка, и может так оказаться, что ещё не все тайлы готовы и получается частичное отображение, т.е. моргание.

Придумал и реализовал следующий фикс:

1. Перед сменой зума запоминается текущая матрица тайлов (тех, что отображаются на экране в данный момент).
2. Во время зумирования выводится кэшированная матрица из п.1 и поверх неё — новая матрица с динамически подгружаемыми тайлами.
3. Когда зумирование завершается, матрица из п.1 продолжает использоваться некоторое время, пока новая матрица не завершит своё обновление, либо пока пользователь не сдвинет карту или не сменит зум.

На последнем этапе возникает трудность: приходится угадывать, когда обновление матрицы завершено, так как никакой нотификации для этого не предусмотрено. В итоге могут быть случаи, когда кэшированная матрица всё же устаревает, а обновлённая ещё не до конца готова. И тогда временные тайлы исчезают, и карта частично очищается. Получается не идеально, но уже, в общем-то, терпимо.

(0020577)
zed (manager)
25-12-2025 10:22

Починил. Добавил нотифаер для детектирования окончания обновления матрицы и нашёл ещё одну причину мерцания из-за таймера перерисовки. Иногда он срабатывал в неудачное время, когда основная матрица вообще была равна nil и просто выключал слой. Теперь, пока жива кэшированная матрица он так делать не будет.

- Users who viewed this issue
User List Anonymous (3084x), ingener (3x), zed (13x), qq117511 (1x), vdemidov (12x), VMatveev (1x), ANDREE64 (1x), Parasite (1x)
Total Views 3116
Last View 28-12-2025 04:18

- Issue History
Date Modified Username Field Change
17-04-2015 19:17 zed New Issue
17-04-2015 20:11 vdemidov Note Added: 0015612
02-08-2016 10:16 vdemidov Product Version .Nightly => 160707
27-03-2019 10:23 vdemidov Status new => confirmed
27-03-2019 10:23 vdemidov Target Version => 44xxxx
08-08-2025 13:22 zed Category Баг => Баг / Bug
10-12-2025 07:54 zed Relationship added has duplicate 0003923
21-12-2025 16:47 zed Note Added: 0020575
21-12-2025 16:56 zed Note Edited: 0020575 View Revisions
21-12-2025 16:59 zed Note Edited: 0020575 View Revisions
25-12-2025 10:22 zed Note Added: 0020577
25-12-2025 10:23 zed Status confirmed => resolved
25-12-2025 10:23 zed Fixed in Version => 26xxxx
25-12-2025 10:23 zed Resolution open => fixed
25-12-2025 10:23 zed Assigned To => zed
25-12-2025 10:23 zed Target Version 44xxxx => 26xxxx



Copyright © 2007 - 2025 SAS.Planet Team