2012-08-13 71 views
2

我們正在開發一個WPF應用程序,主要使用WPF Bing Maps控件。WPF Bing Maps控件(IE)緩存

我們有多個瓦片層可以在運行時打開或關閉。瓦片層使用自定義的片源檢索他們的數據,所以我們對返回的uri有更多的控制權。

當應用程序啓動時,多個tilelayers是可見的,導致我們的restservices調用檢索瓷磚。服務檢查數據庫中是否存在圖像,如果存在,則返回圖像,如果不存在,生成圖像,存儲它們並返回它們。到目前爲止,它的功能就像一個魅力

現在有以下兩種情況:由於某種原因DB被清除 - >服務只是在調用時重新創建映像,然後返回它們。這裏沒問題。

如果有人清除IE緩存(客戶端),而應用程序仍在運行,請放大/移動地圖。之前加載的瓷磚消失了,不會回來。進一步放大時,它會檢索之前未加載的圖塊,但會在圖塊圖層中留下很大空白。

解決此問題的唯一方法似乎是關閉應用程序,清除IE緩存,清除數據庫並重新啓動。什麼導致這種行爲?爲什麼看起來像是空的圖像加載?

在對某個選項進行一些挖掘之後,會給uri一個tick參數,所以它會一直檢索新的tile。但是這有一個主要的性能損失。

有關如何解決此問題的任何建議?

在此先感謝。

+0

不知道如何解決這個問題,但你可能想看看這個[替代控制](http://wpfmapcontrol.codeplex.com/)。它具有與Bing地圖WPF控件類似的API,但提供了對本地地圖圖塊緩存的完全控制。除了創建tile URI的標準TileSource類外,它還提供了一個特殊的TileSource類,它可以爲給定縮放級別和x和y tile索引直接創建ImageSource。 – Clemens 2012-08-13 19:41:54

回答

0

如果WPF中的圖塊圖層已經加載了一次,它將緩存圖塊並從緩存中取出圖塊。如果清除緩存,那麼這些磁貼將不會重新加載。這是針對性能而設計的。特別是對於沒有全部可能拼貼的拼貼圖層。這是沒有辦法的。