我正在开发一个 WP7 应用程序,它使用 bing map 来显示 ~600 个图钉。当我使用 map.Children.Add(pushpin) 将它们添加到 map 时,UI 会卡住约 200 毫秒。我已经看到,在silverlight 中,您可以使用Microsoft.Maps.EntityCollection 向 map 添加图钉,但不幸的是我找不到如何在WP7 上使用该程序集。有谁知道解决这个问题?
最佳答案
也许您正在以错误的方式看待问题。 WP7 是一款紧凑型(虽然功能强大),擅长快速向用户展示他们想知道的内容(当应用程序编写正确时)。
用户不可能在这么小的设备上一次性看到 600 个图钉,那么为什么不向他们展示位于可视区域(或靠近它)的图钉,并在用户在 map 上平移时添加图钉呢?
或者,您可以使用 DispatcherTimer
一次添加一个(或多个)图钉来“涓涓”地提供图钉。以便用户看到图钉被逐渐添加而不会显着影响性能。
另一种可能性(这是我通常做的)是添加 MapItemsControl
将 DataTemplate 设置为图钉并将集合绑定(bind)到图钉位置集合。如果绑定(bind)到 ObservableCollection
如果性能有问题,您可以如上所述“涓流”喂它。
关于silverlight - 以编程方式将数百个图钉添加到 bing map 会卡住 WP7 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225309/