我正在开发一个WP7应用程序,该应用程序使用bing地图来显示大约600个图钉。当我使用地图将它们添加到地图时。Children。Add(pushpin)UI冻结约200毫秒。我看到在silverlight中,您可以使用Microsoft.Maps.EntityCollection向映射添加pin,但不幸的是,我找不到如何在WP7上使用该程序集。有人知道解决这个问题的办法吗?
也许您对这个问题的看法是错误的。WP7是一个紧凑型(尽管功能强大),它擅长向用户快速显示他们想知道的内容(当应用程序编写正确时)。
用户不可能在这么小的设备上一次看到600个图钉,那么为什么不向他们展示可视区域(或靠近可视区域)的图钉,并在用户在地图上平移时添加图钉呢?
或者,您可以通过使用DispatcherTimer
一次添加一个(或多个)图钉来"滴流"馈送图钉,这样用户就可以看到图钉是逐渐添加的,而不会严重影响性能。
另一种可能性(我通常这样做)是添加一个MapItemsControl
,其中DataTemplate设置为Pushpin,并将集合绑定到您的Pushpin位置集合。如果绑定是到ObservableCollection
的,那么如果perf是一个问题,您可以如上所述"涓滴"馈送它。
从与Derek类似的角度来看,我发现你不太可能同时在屏幕上放置600个引脚。我猜它们跨越了一个大的地理区域,用户不太可能一次看到超过几个。
如果是这样的话,你可以简单地应用clirect来剔除你的点,然后将得到的适度列表添加到一个层中,然后Presto!高性能。
此外,还有一个问题是,当用户放大很长一段距离时,该怎么办,因为看到了太多的引脚,它们合并成了一个无用但颜色鲜艳的大斑点。这是一个传统上用四叉树解决的更复杂的问题,我怀疑你只是说"什么?"但幸运的是谷歌是你的朋友。
哦,为了解决你所说的问题,不要直接在地图上添加引脚。将它们添加到MapLayer中,然后添加。