Панорамирование для шестидесяти

Мне нужно визуализировать большое количество текстиля на холсте. Я хотел бы сделать так, чтобы я рендерил только плитки, которые видны пользователю, и загружал дополнительные шестнадцатеричные объекты при прокрутке пользователя (используя клавиши перетаскивания или стрелки или элемент управления панорамированием). У меня в голове есть основная идея, но я ищу помощь в разработке более надежного решения, которое будет хорошо масштабироваться.

Что я имею в виду и могу сделать прямо сейчас:

а. определить плитки, которые нужно загрузить на экран, и получить данные для их рендеринга с сервера. b. когда пользователь перетаскивает, определите новый набор плиток, которые необходимо загрузить, получите данные и снова перезагрузите весь экран.

Это работает, но не дает ощущения прокрутки - это, по сути, внезапно меняет все. В идеале, я хотел бы получить ощущение карт Google при прокрутке этого. Я играл с загрузкой некоторых плиток сбоку от карты и прокручивал только базовый холст при перетаскивании, но это не очень хорошо работает, потому что холст кончился... было бы очень здорово, если бы у меня был холст, который вел себя как кольцевой буфер, поэтому прокрутка в любом направлении оставляла в памяти только определенное количество фрагментов, и я мог непрерывно прокручивать во всех направлениях.

Любые мысли или полезные советы приветствуются.

Спасибо!

1 ответ

Я бы предложил использовать Google Maps Flash API в качестве отправной точки для этого. Вы можете создать CustomTileLayer, и если у вас есть одно большое исходное изображение, вы можете искать создателей пирамид изображений, которые будут разделять ваше изображение на образцы для разных уровней масштабирования (обычно я считаю, что в итоге создается структура папок, использующая уровень масштабирования). в качестве имени папки, а затем содержит плитки x, y в каждой папке в зависимости от разрешения изображения и уровня масштабирования). Если в любом случае масштабирование не является обязательным, у вас будет только один уровень масштабирования, и вы захотите отключить все элементы управления масштабированием в элементе управления "Карта". Дайте мне знать, если есть причина, по которой вы избегаете этого или считаете, что это не хорошее решение (возможно, просто не знали о его существовании, но я думаю, что если вы хотите что-то вроде поведения карт Google, почему бы не использовать карты Google как основа). Если после закапывания вам понадобится дополнительная помощь, дайте мне знать, и я буду рад помочь, я сам никогда не реализовывал CustomTileLayer, но имею небольшой опыт работы с Google Maps Flash API (он также гибкий, убедитесь, что вы используете правильный swc, один - Flash, а другой - Flex, не включайте оба).

Удачи шон

http://nl-samples.googlecode.com/svn/trunk/flexmap/9a/bin-release/CustomProjection.html

Другие вопросы по тегам