WPF Bing Map性能问题

时间:2017-06-17 08:37:13

标签: wpf performance bing-maps

我创建了一个WPF应用程序,用MapPolygon来显示柏林地区。在<m:Map>标记内,我创建了12次MapItemsControl来显示不同的区域。这是一个代码:

<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来绘制正确的多边形。

一切正常。唯一的问题是,拖动地图非常缓慢且滞后。我唯一能想到的测试性能的是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

我真的不知道如何解决这个问题。有人能引导我走向正确的方向吗?

1 个答案:

答案 0 :(得分:1)

看一下使用基于缩放级别的顶点缩减。我在很久以前用Bing Maps Silverlight控件写了一篇博客帖子:https://rbrundritt.wordpress.com/2011/12/03/vertex-reductionone-of-my-secret-weapons/使用WPF控件应该相当容易。将视图更改结束事件添加到地图,并检查缩放级别是否有可能。如果有,则更新多边形的位置。

或者,如果您希望能够渲染更多数据,请通过Web浏览器控件查看应用中的Bing Maps V8 Web控件。该控件在其中有大量优化,允许它渲染数万个多边形。