2013-03-01 77 views
0

我在C#中使用bing maps components用於WP7和我的自定義切片。
我覆蓋Microsoft.Phone.Controls.Maps.TileSource,一切ok,我可以使用我的瓷磚。如何阻止冰點地圖平移到座標邊界?

但是,因爲沒有整個世界,我只想在一個城市範圍內限制泛?

使用MapDragEventArgs檢查並阻止鍋是正確的?

private void map_MapPan(object sender, MapDragEventArgs e) 
{ 
    Map m = (Map)sender; 
    // something...? 
} 

...或者我需要重寫別的東西?在那種情況下,我需要重寫什麼?

謝謝。

回答

1

我還沒有和Bing地圖的Windows Phone 7上的工作,由文檔,以便去單獨,我會做到以下幾點:

  1. 始終初始化地圖,使其視圖邊界矩形位於定義的圖塊區域內。
  2. 綁定到ViewChangeStart事件。 (或ViewChangeOnFrame,您將不得不嘗試並找出使用哪個)
  3. ViewChangeStart的內部處理程序,檢查TargetBoundingRectangle是否正確落在您的tile覆蓋區域之外。
  4. 如果TargetBoundingRectangle落在您的覆蓋區域之外,請找出一種方法來取消視圖更改或手動將邊界矩形重新設置回上一個有效狀態。

假設一切都像我期望的那樣工作,這應該限制用戶地圖導航到有限的區域,並避免在用戶導航後視圖「捕捉」回到其他地方的行爲。

+0

如果您在ViewChangeStart上執行此操作,您將產生不良的傾斜效果,用戶將無法理解此類行爲發生的原因。這就是爲什麼我建議使用ViewChangeEnd更改地圖的位置,以便您可以平移以匹配您的邊界框。 – 2013-03-02 01:11:34

+0

我曾經假設,由此產生的行爲更接近實體邊界,並且在用戶導航到邊緣時不會出現抖動。再次我沒有實際執行這個,所以你提到的錯誤的傾斜效果可能會發生,如果是這種情況,那麼使用ViewChangeEnd可能會更好 – 2013-03-02 07:27:27