簡體   English   中英

以編程方式將數百個圖釘添加到 bing 地圖會凍結 WP7 UI

[英]Adding hundreds of pushpins programatically to bing maps freezes the WP7 UI

我正在開發一個 WP7 應用程序,它使用 bing 地圖來顯示 ~600 個圖釘。 當我使用 map.Children.Add(pushpin) 將它們添加到 map 時,UI 會凍結約 200 毫秒。 我已經看到在 silverlight 中,您可以使用 Microsoft.Maps.EntityCollection 將引腳添加到 map 但不幸的是我找不到如何在 WP7 上使用該程序集。 有誰知道解決這個問題?

也許您正在以錯誤的方式看待問題。 WP7 是一款緊湊型(雖然功能強大),擅長快速向用戶展示他們想知道的內容(當應用程序編寫正確時)。

在這么小的設備上,用戶不可能在一個 go 中看到 600 個圖釘,那么為什么不向他們展示位於可視區域(或靠近它)的圖釘,並在用戶在 map 周圍平移時添加圖釘呢?

或者,您可以使用DispatcherTimer一次添加一個(或多個)圖釘來“涓涓細流”饋送圖釘,以便用戶看到圖釘被逐漸添加而不會顯着影響性能。

另一種可能性(這是我通常做的)是將 DataTemplate 設置為圖釘的MapItemsControl添加並將集合綁定到圖釘位置集合。 如果綁定到ObservableCollection ,如果性能有問題,您可以如上所述“涓涓”饋送它。

在與 Derek 相似的觀點中,我發現您不太可能真的想同時在屏幕上放置 600 個圖釘。 我猜它們跨越了一個很大的地理區域,用戶一次不太可能看到多個。

如果是這種情況,您可以簡單地應用一個 cliprect 來剔除您的點,然后將生成的適度列表添加到圖層,然后 Presto。 高性能。

此外,還有一個問題是當用戶放大很遠時該怎么辦,看到這么多的圖釘,它們合並成一個大的無用但顏色鮮艷的斑點。 這是一個傳統上用四叉樹解決的更復雜的問題,我懷疑你剛才說的是“什么?” 但幸運的是,谷歌是你的朋友。

哦,為了解決您所說的問題 - 不要將引腳直接添加到 map。 將它們添加到 MapLayer,然后添加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM