WPF Bing地图性能问题

问题描述:

我创建了一个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 

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

+0

只是为了澄清一点,一个地区有多个多边形?在这样的地点集合中通常有多少点? – Clemens

+0

或多或少。每个区域都是一个List ,每个都有一个LocationCollection。数量取决于大小,但我得到的地点从120到790. –

+0

好吧,在12个地区的几个地区的几百个位置。这可以简单地总结为几千个折线点,这可能太多了。尝试减少折线点的数量,可能取决于当前缩放级别。在较高的缩放级别下,只显示位于当前视口内的多段线,以较低的缩放级别减少每个多段线的点数量,例如,通过Douglas-Ramer-Peucker算法。 – Clemens

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

或者,如果您希望能够呈现更多数据,请查看通过Web浏览器控件在您的应用中使用Bing Maps V8 Web控件。这个控件有很多优化,可以渲染数万个多边形。

+0

谢谢,请看看! –