C# Windows Phone 8.1运行时中多个子项的MapControl性能糟糕

C# Windows Phone 8.1运行时中多个子项的MapControl性能糟糕,c#,windows-runtime,maps,winrt-xaml,windows-phone-8.1,C#,Windows Runtime,Maps,Winrt Xaml,Windows Phone 8.1,我有一个MapControl,应该用多个对象(500+)填充。这些对象表示某种POI。当用户点击对象(图钉)时,我会显示有关POI的更多信息。因此,我需要: 能够处理大量子对象的MapControl 截获子对象的事件 为了实现第二个目标,我决定定义自己的图钉模板: <maps:MapControl x:Name="Map"> <maps:MapItemsControl ItemsSource="{Binding Pushpins}"> <ma

我有一个
MapControl
,应该用多个对象(500+)填充。这些对象表示某种POI。当用户点击对象(图钉)时,我会显示有关POI的更多信息。因此,我需要:

  • 能够处理大量子对象的
    MapControl
  • 截获子对象的事件
  • 为了实现第二个目标,我决定定义自己的图钉模板:

      <maps:MapControl x:Name="Map">
        <maps:MapItemsControl ItemsSource="{Binding Pushpins}">
          <maps:MapItemsControl.ItemTemplate>
            <DataTemplate>
              <Image Width="40"
                     Height="40"
                     Source="{ ... }"
                     Tapped="OnPushpinTappedAsync"
                     maps:MapControl.Location="{Binding Location}"
                     maps:MapControl.NormalizedAnchorPoint="{Binding AnchorPoint}" />
            </DataTemplate>
          </maps:MapItemsControl.ItemTemplate>
        </maps:MapItemsControl>
      </maps:MapControl>
    
    
    
    这很有效,除了。。这种方法的视觉效果非常好。每次我移动地图,每个图钉都会闪烁很多。我不知道,他们好像不受这个职位的约束。他们也落后了。看起来真的很糟糕。这些对象的渲染非常糟糕

    另一种方法是向
    MapControl
    MapElements
    属性添加元素。这使得这些对象的渲染非常好。 但是我失去了绑定的能力,我必须解决这个问题——我不太喜欢这个。还有第二个问题——据我所知,渲染
    MapElements
    集合中的对象是一种最有效的方法。因此,这并不能保证它会成功。这对我来说不是一个选项,因为在未来我计划添加集群功能,所以我需要完全控制地图上渲染的内容和不渲染的内容

    你知道为什么这些
    MapControl
    的元素会闪烁这么多吗?我能做些什么来防止它?提前感谢您的提示或回答。

    试试以下方法:

    Tag="{Binding index_of_collection}"
    
    这是:

    OnPushpinTappedAsync()
    
    int index = (int)(sender as Image).Tag;  //index_of_collection
    

    我面临着完全相同的问题。在我看来,地图控制完全被破坏了。除了性能之外,还有很多bug:(

    您无法真正解决问题,但可以创建一个“oldschool”WP8.0 Silverlight应用程序并使用以下内容:

            <Page xmlns:map="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps">
                <map:Map Grid.Row="1" x:Name="myMap">
                    <tool:MapExtensions.Children>
                        <tool:MapItemsControl>
                           ... and so on ...
    
    
    等等
    

    这很好,但当然你必须改变一切,从Win(p)RT到Silverlight…

    我也面临这个问题,但我发现这是有用的


    希望Microsoft更新Windows 10的地图控件。

    您是否尝试过在图像控件上设置CacheMode=“BitmapCache”?我刚刚尝试过,没有什么不同。您能解释一下您的答案有什么帮助吗?