Silverlight: Сделать DeepZoom для загрузки плиток из локального источника? - PullRequest
1 голос
/ 11 января 2009

Я пытаюсь создать приложение карты, используя DeepZoom. Это уже работает, загружая изображения плитки с сервера. Проблема в том, что скорость загрузки недостаточно высока, при загрузке новых плиток всегда есть небольшая задержка.

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

Кто-нибудь знает, как сделать MultiScaleImage для загрузки тайлов из локального источника? Я уже пытался создать свой собственный MultiScaleTileSource и переопределить метод GetTileLayers, но безуспешно.

Должен быть способ, верно? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 11 января 2009

Я не играл с DeepZoom в Silverlight, но чтобы сделать это с HD View, я использовал два подхода:

  1. Просто поместите файлы в файловую систему и укажите на них XML-код с помощью записи URI "file: // ...".
  2. Я установил Apache и обслуживал содержимое с http://localhost/...

Оба работали нормально, а производительность значительно улучшилась, как и ожидалось, по сравнению со сценарием по беспроводной сети.

Я не уверен, что (1) возможно с DeepZoom, но (2) должно работать нормально. Вам не нужно использовать Apace (или IE). Рассмотрим собственный HTTP-сервер, написанный на Python или C #, который отображает запрошенный URL-адрес в локальный файл.

Если вы пишете свой собственный HTTP-сервер, вы можете подумать о ленивой загрузке файлов. Это будет означать, что пользователь видит задержку только в первый раз, когда он просматривает область изображения. В этом случае ваш сервер действует просто как кэш тайла, и могут быть применимы обычные политики удаления кэша (на ум приходит не так давно).

0 голосов
/ 13 апреля 2009

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

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

Итак, вот как я собрал свой веб-проект. В корневой папке у меня есть xap и т. Д., Который содержит мой серебряный световой элемент (что очень просто). Это в основном эквивалентно папке ClientBin. Теперь внутри этой папки я поместил папку "meeting", которая содержит выходные данные инструмента composer ("meeting_files" и "meeting.xml"). Конечно, Meeting_files содержит все биты MSI.

Теперь корневой HTML-файл довольно прост - для исходного аргумента MSI я просто задаю ему "meeting / meeting.xml" - относительный путь.

И это работает для меня. Дайте мне знать, если вы хотите больше информации (ну, это так долго, после того как вы задали вопрос, это может больше не иметь значения). Производительность при локальных вещах - это замечательно, но для изображения приличного размера загрузка всех файлов может длиться вечно. Некоторые из моих действительно больших изображений с глубоким увеличением имеют размер 10 ГБ!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...