我創建了一個WPF應用程序來顯示柏林地區MapPolygon
s。在<m:Map>
標籤內,我創建了12次MapItemsControl
來顯示不同的地區。下面是一個代碼:WPF Bing地圖性能問題
<m:MapItemsControl ItemsSource="{Binding dMitte}">
<m:MapItemsControl.Style>
<Style TargetType="{x:Type m:MapItemsControl}">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MitteVisibility, Path=IsChecked}" Value="True">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
</m:MapItemsControl.Style>
<m:MapItemsControl.ItemTemplate>
<DataTemplate>
<!-- ReSharper disable once Xaml.BindingWithContextNotResolved -->
<m:MapPolygon Fill="Red" Stroke="Black" StrokeThickness="2" Opacity="0.2" Locations="{Binding Path=Locations}"/>
</DataTemplate>
</m:MapItemsControl.ItemTemplate>
</m:MapItemsControl>
每ItemsSource
有一個LocationCollection
其中很多Location
s的存儲畫出正確的多邊形的屬性。
一切工作正常。唯一的問題是,拖動地圖非常緩慢和遲緩。我能想到的測試性能的唯一方法是Visual Studio中內置的性能分析工具。這給了我這個結果:
Function Name Inclusive Samples Exclusive Samples Inclusive Samples % Exclusive Samples % Module Name
Microsoft.Maps.MapExtras.BitmapImageRequestQueue.DownloadThreadStart() 1 0 100,00 0,00 Microsoft.Maps.MapControl.WPF.dll
--Microsoft.Maps.MapExtras.BitmapImageRequestQueue.DownloadThreadStart() 1 0 100,00 0,00 Microsoft.Maps.MapControl.WPF.dll
我真的不知道如何解決這個問題。有人能讓我走向正確的方向嗎?
只是爲了澄清一點,一個地區有多個多邊形?在這樣的地點集合中通常有多少點? – Clemens
或多或少。每個區域都是一個List,每個都有一個LocationCollection。數量取決於大小,但我得到的地點從120到790. –
好吧,在12個地區的幾個地區的幾百個位置。這可以簡單地總結爲幾千個折線點,這可能太多了。嘗試減少折線點的數量,可能取決於當前縮放級別。在較高的縮放級別下,只顯示位於當前視口內的多段線,以較低的縮放級別減少每個多段線的點數量,例如,通過Douglas-Ramer-Peucker算法。 – Clemens