![]() |
Растровая карта, подгрузка тайлами и плавный скроллинг
Есть растровая карта, которая подгружается кусками 256 x 256. Тайлы (tile) генерирует сервер в зависимости от масштаба (zoom) и положения карты.
Если потянуть карту мышкой, недостающие тайлы будут подгружаться. Но если тянуть далеко, то размер клипа превзойдет ограничение в 2880 x 2880. На максимальном увеличении размер карты 2097152 x 1048576. Можно конечно на onMouseUp создавать клип в котором тайлы заново, но тогда не будет плавности движения... Что можно придумать? Поможет ли мне BitMapData? Код:
map_mc.onMouseDown = function () { |
Есть метод draw() класса BitmapData
|
А также scroll и copyPixels
|
У BitmapData тоже ограничение в 2880 x 2880.
Но не понятно зачем все сразу отображать. 2'097'152 x 1'048'576 - это слишком много. Нужно отображать только видимую область + запас во все стороны. Остальное держать в памяти. И при перетаскиваниие, удалять части вышедшие за пределы отведенной границы и загружать новые. |
iNils:
А если я удалю тайлы с той стороны которая вышла за границу экрана, то размер клипа автоматически уменьшится? |
Цитата:
|
Уменьшится, конечно. А в чём проблема-то?
|
__etc:
Проблема в том что мне сказали переделать сайт с Javascript'а на Flash, а я знаком с последним только две недели, и не хочется наступать на грабли. All: Сейчас попробую будет ли размер клипа уменьшаться при удалении невидимых тайлов. Пока всем спасибо. :) |
Цитата:
|
Цитата:
|
iNils:
Мне нужно отображать (для экрана 1024x768) одновременно 1024/256 = 4 тайла по ширине 768/256 = 3 тайла по высоте (4+2)*(3+2) = 30 тайлов. 2 - запас с каждой стороны экрана. miramax: Да, типа Google Maps, только еще будет погода на карте. И детализация поменьше, чем у Google. |
Странная математика. Если взять за схему изображение цифровой клавиатуры
7 | 8 | 9 4 | 5 | 6 1 | 2 | 3 где 5 это видимая область, то: 12 * 9 = 108 Делая сдвиг на целый экран, мы сразу же имееем в запасе в любую сторону еще один. Те тайлы что вышли за пределы схемы, выгружаем. Напрмир сдвинули с 5 на 7, значит 9, 6, 3, 1, 2 выгрузили. Меняем отсчет, то есть 7-ку, считаем теперь 5-ой и нам надо загрузить 1, 4, 7, 8, 9. Это схемотично, для тайлов будет чуть сложнее. |
iNils:
У меня просто на javascript кешировался не целый экран а только чуть-чуть. То есть предполагалось что юзер не будет на целый экран тянуть. Ладно, я еще на работе сижу, надо уже сваливать... С утра продолжу. Всем спасибо :) |
| Часовой пояс GMT +4, время: 15:35. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.