當用戶完成放大/縮小地圖時,我需要執行一些代碼。它的ZoomLevelChanged
事件是在用戶放大或縮小時引發的,因此它不是我的解決方案(主要是因爲我想執行的代碼是一個相當昂貴的操作)。有任何想法嗎?UWP:地圖控件ZoomFinished事件
回答
如果性能是這裏的主要問題,那麼只有當縮放級別從一個整數變爲另一個整數(1-> 2,2-> 3等)時纔可以「重新渲染」地圖元素(滑動部分昏迷後)。據我所知,ZoomLevel
的最大值是20(對於2D
)模式。所以我認爲它必須足夠平滑,讓用戶不要注意。
一些代碼:
public int ZoomLevel {get; set;} = initialZoomLevel;
private void OnZoomLevelChanged(object sender, EventArgs args)
{
if((int)Map.ZoomLevel!=ZoomLevel)
{
//Rerender stuff
}
}
我似乎已經這樣做了。你是對的。用戶沒有注意到 – Alex
我認爲更好的解決辦法是聽LoadingStatusChanged事件,然後採取行動,當你回來MapLoadingStatus.Loaded。
public void LoadingStatusChangedEventHandler(MapControl sender, Object o)
{
if (sender.LoadingStatus == MapLoadingStatus.Loaded)
{
// The map has stopped moving and finished rendering
// If necessary, check that zoom level is different
DoExpensiveOperation();
}
}
我知道該事件的文檔不是很大,但在this code sample有一個小的更多信息,你也許能找到更多的git repo。
祝你好運!
好主意,讓我試試 – Alex
是的,讓我知道它是否適合你@ j0ey_wh! –
- 1. 圖像控件鍵盤事件WPF,UWP
- 2. 贏得10 UWP地圖控件PointerMoved事件失蹤
- 3. UWP NetworkConnectionChanged事件
- 4. 谷歌地圖縮放控制事件
- 5. UWP地圖控件缺少細節道路詳細信息
- 6. 在UWP WebView控件中顯示本地圖像
- 7. 是否有Javascript UWP應用程序的地圖控件?
- 8. UWP MediaPlayerElement鍵盤事件
- 9. UWP中的全局事件
- 10. UWP TimedMetadataTrack事件未觸發
- 11. Android地圖控件
- 12. ASP.Net地圖控件
- 13. 地圖控件Template10
- 14. UWP模式用戶控件
- 15. UWP ListView控件不滾動
- 16. 換膚控件(WPF/UWP)
- 17. UWP從用戶控件
- 18. Bing地圖Ajax控件vs Silverlight控件
- 19. 谷歌地圖觸發谷歌分析事件使用谷歌地圖控件
- 20. 圖像地圖控件(ocx)
- 21. 將JQuery事件綁定到Google地圖自定義控件
- 22. Bing地圖中的交通事件和數據Silverlight控件
- 23. 是否有加載Google地圖控件時發生的事件?
- 24. Bing地圖:TileLayer事件
- 25. 谷歌地圖RichMarker事件
- 26. 谷歌地圖和事件
- 27. 流星事件地圖?
- 28. Google地圖標記事件
- 29. NavigationDrawer + Google地圖事件
- 30. 帶事件處理程序的UWP模板控制
也許在用戶*啓動*縮放時設置一個計時器,並且如果再次調用該事件,則重置該計時器。計時器達到3秒後,您可以認爲它們已完成縮放。 –
@MikeEason不是我能想到的cleaners方式,但是,我認爲它可能工作 – Alex