Silverlight:让DeepZoom从本地源加载图块?

时间:2009-01-11 13:49:35

标签: c# .net silverlight

我正在尝试使用DeepZoom制作地图应用程序。 它已经通过从服务器加载平铺图像来工作。 问题是,加载速度不够好,下载新图块时总会有一个小的延迟。

我的想法是立即下载整个瓷砖包,然后从本地来源加载它们。 我知道这在某种程度上与DeepZoom的想法相矛盾,但我认为这正是我所需要的。

有谁知道如何让MultiScaleImage从本地来源加载图块? 我已经尝试制作自己的MultiScaleTileSource并覆盖GetTileLayers方法,但没有运气。

必须有办法,对吧? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

我没有在Silverlight中使用DeepZoom,但为了使用HD View,我使用了两种方法:

  1. 只需将文件放在文件系统上并将XML指向它们,然后点击“file:// ...”URI表示法。
  2. 我安装了Apache并提供了来自http://localhost/ ...
  3. 的内容

    与线上方案相比,两者都运行良好,性能得到了很大改善。

    我不确定(1)是否可以使用DeepZoom,但(2)应该可以正常工作。您不需要使用Apace(或IE)。考虑您自己的用Python或C#编写的HTTP服务器,它将请求的URL映射到本地文件。

    如果您确实编写了自己的HTTP服务器,您可能会考虑懒惰地下载文件。这意味着用户仅在他们第一次查看图像区域时才看到滞后。然后,您的服务器仅作为磁贴缓存,并且通常的缓存驱逐策略可能适用(最近最少使用弹簧)。

答案 1 :(得分:-1)

根据certian的限制,这是完全可能的。事实上,我一直这样做 - 我在本地磁盘上生成一个银色的浅光刻像,然后创建一个用户可以双击的网页,它可以正常工作。

首先,限制:如果您正在使用集合,通常需要加载一些数据文件以了解集合中每个msi的位置 - 这需要Web请求 - 我无法弄清楚如何使这些工作本地。无论出于何种原因,MSI控件在本地加载文件都没有问题。

所以,这就是我如何整理我的网络项目。在根文件夹中,我有xap等,它包含我的银色灯光控件(这很简单)。这基本上等同于ClientBin文件夹。现在,在该文件夹中我放了一个“会议”文件夹,其中包含作曲家工具的输出(“meeting_files”和“meeting.xml”)。当然,meeting_files包含MSI的所有位。

现在根HTML文件非常简单 - 对于MSI的源参数,我只是给它“meeting / meeting.xml” - 一个相对路径。

这对我有用。如果您想了解更多信息,请告诉我(好吧,在您提出问题之后这已经很久了,它可能不再重要)。事物是本地的Performacne很棒 - 但是对于尺寸合适的图像,下载所有文件可能需要永远。我的一些非常深的缩放图像是10 GB!