2014-11-05 31 views
1

我們有一個遺留網站,從中我們需要刪除所有Google地圖,並用MapBox提供的地圖取代它們。所以我正處於一個崩潰項目的中間,以換取新的舊版本。當Telerik拆分器內部沒有繪製所有拼貼圖時,Mapbox並沒有畫出所有拼圖

這裏是我的問題:舊網站是用ASP.NET寫的,大量使用Telerik的控件。在這個頁面中,我們有一個RadSplitter和一個RadPane中繪製的Google地圖。

使用MapBox地圖轉換Google地圖非常簡單,除了MapBox地圖不能正確呈現。只有沿着窗格左邊緣的瓷磚正在繪製。但是 - 當我調整瀏覽器窗口的大小時,其餘的圖塊會繪製。

div的位置是絕對的,頂部,底部,右側和左側都設置爲0.哪些Google地圖可以使用。

我的猜測是Telerik正在做一些令MapBox渲染代碼困擾div的實際大小的東西。而且,當窗口調整大小時,MapBox會重新評估事物,並將其正確。

我一直在玩弄這個了幾個小時了,還是一無所獲:

  • 我試着在代碼觸發resize事件,和瓷磚沒有畫。
  • 我試過將地圖放在一個固定大小的div中,在窗格內,地圖繪製到了邊緣,然後div使用滾動條坐在窗格內,這證實了我對我的看法處理大小問題,但我不能有滾動條,所以
  • 我試着設置div的寬度和高度,以代碼中窗格的大小,並沒有觸發地圖畫出缺失的窗格。

我用盡了想法。

MapBox渲染器上是否有一些事件或函數會導致它重繪瀏覽器調整大小時的方式?

+0

您是否嘗試將寬度和高度設置爲100%的div放置地圖? RadPanes總是以像素爲單位設置尺寸,所以這應該讓它按預期調整尺寸。 此外,嘗試切換VisibleDuringInit屬性值,看看這是否有所作爲 – rdmptn 2014-11-12 11:42:36

回答

0

所以地圖正在繪製在假框架,這可能是擺脫計算的什麼是「看得見」 ...

你有共享的實際輸出HTML的方法嗎?像jsfiddle?

是否有任何控制檯錯誤?也許這是簡單的,因爲你已經達到了地圖瓷磚服務器的配額...

嘗試不同的瓷磚服務器?

+0

我恐怕這是一個怪異的應用程序的一部分,有這麼多的依賴於共享任何輸出的一部分是不可行的。我們的目標是用容易維護的東西來替換整個事物(並且不使用ASP.NET),但是隨後我們從高度受到這個任務的打擊... – 2014-11-05 22:18:18

2

原來答案是很簡單:

map.invalidateSize(); 

編輯 - 幾天層

原來,只能在IE瀏覽器。在Chrome中,invalidateSize()不會導致地圖正確調整自身大小。

+0

不錯!很高興我推薦的是部分問題,即使我沒有解決方案。 – nrutas 2014-11-06 23:12:44

+0

map.invalidateSize()在map.fireEvent(「resize」)沒有的時候爲我們重繪地圖。似乎在Chrome和IE(至少)中工作。 – 2015-06-02 13:52:41