Страница 1 из 1
Быстрое перелистование масштаа Openlayers
Добавлено: 16 фев 2011, 00:28
dvd_xaker
При быстром перелистование с масштаба на масштаб. происходит следующие:
1)слои с одного масшаба(некоторые куски тайлов накладываюся на масштаб меньше
То есть есть загруженный масштаб при быстрой смене масштаба полается что кусок с масштаба большего закрывает тайл нижний.
Если есть какие то способы решения или обхода данной проблемы
Re: Быстрое перелистование масштаа Openlayers
Добавлено: 16 фев 2011, 02:48
oxch
Всегда поражаюсь, как иногда формулируются вопросы: записано русскими буквами и русскими словами, но совершенно запутанно.
А теперь по существу анекдот:
приходит старушка к доктору и говорит:
- доктор, почему, когда я делаю вот так, мне больно?
- а вы не делайте так.
Изменение масштаба - это событие, которое обрабатывается скриптом на Javascript.
Браузер работает в многозадачной среде и, следовательно, имеет возможность одновременного
запуска нескольких скриптов.
и вот тогда, когда вы начинаете прыгать по масштабам, то каждое изменение запускает скрипт
обновления тайлов и параллельная работа нескольких таких скриптов и приводит к такому
неожиданному для вас эффекту.
но если вы таки хотите решение, то используйте принцип генерализации:
1. разместите каждый масштаб в своем слое.
2. при изменении масштаба отключайте видимость всех слоев, кроме отражающего данные в текущем масштабе.
P.$: и все же никак не могу отделаться от ощущения, что проблема совсем даже не является проблемой, а лишь проявлением желания "иметь чудо здесь и сейчас и чтобы было!".
Re: Быстрое перелистование масштаа Openlayers
Добавлено: 19 фев 2011, 20:35
dvd_xaker
Да так оно и есть) как сразу не подумал что другое перебивает)
Re: Быстрое перелистование масштаа Openlayers
Добавлено: 20 фев 2011, 00:49
Mavka
Эм... сейчас под рукой нету кода, но постараюсь проверить позже... Дело в том, что для события типа "zoom" как правило реализуют следующую схему:
1. Произошло событие "onZoom", запускаем таймер на 5 сек.
2. Произошло событие "onZoom", проверяем таймер. Если он не включен, то переходим к (1), иначе увеличиваем таймер обратно до 5 сек.
3. Произошло событие "onTimer" (истекли 5 сек.) - можно начинать грузить слои.
Таким образом, событий несколько, но таймер один. И пункт (2) нужен что бы не грузить слои сразу, а чуть-чуть подождать когда у юзера закончится истерика и конвульсии мышки прекратятся. В OL была проблема что при прокрутке сразу на несколько зумов начинали грузиться слои для всех промежуточных масштабов. В итоге рисовался только нужный, а остальные попусту забивали трафик. Я как наивный пионер считал что разработчики все сделали по уму.
Непосредственно по сути вопроса в первом посте - я такого не встречал. Проверить наличие бага достаточно просто - откройте отладчик и посмотрите какие запросы на сервер уходят, потом посмотрите адреса у итоговых тайлов. Но что то уж слишком коварная бага и она бы давно доконала всех пользователей.
Re: Быстрое перелистование масштаа Openlayers
Добавлено: 20 фев 2011, 14:04
dvd_xaker
Да так и есть) кстати сейчас переодикой выскакивает из за второго обработчика JS не относящегося к карте))) а таймер это то что надо... было бы не плохо
Re: Быстрое перелистование масштаа Openlayers
Добавлено: 28 фев 2011, 10:17
dvd_xaker
Баг проявляется именно в OPERA. в остальных не замечал(