2013-04-30 78 views
1

在我使用XAML和C#的地鐵應用程序中,我需要在地圖控件上繪製一些引腳。我發現了幾個樣本,其中所有這些樣本都在代碼後面的文件中繪製了針腳(將針腳作爲兒童添加到地圖控件中)。有沒有可能以另一種方式? (類似於Windows Phone)WinRT在地圖上繪製引腳

+0

請指定一種什麼樣的另一種方式。非Windows手機開發人員無法解決您的問題。 – Xyroid 2013-04-30 07:04:04

+1

我認爲在Windows Phone上你有層次和ItemsControls,它們的項目可以綁定到具有地理座標的對象集合,如圖釘,路線或區域。不知道它是不是在Windows 8上有所不同。 – 2013-04-30 20:25:51

+0

@FilipSkakun,我只希望W8地圖與WP平價。您目前無法有效綁定(還)。 – 2013-05-08 15:51:50

回答

1

您可以創建一個從ItemsControl派生的自定義控件。它將監視ViewModel中支持ObservableCollection的更改。然後,你可以只添加/減少引腳。

注意:這不一定是一個簡單的任務。有一個原因是有公司爲盈利創造複雜的控制,這當然是一個更復雜的控制。這幾乎不可能,但需要完成一些工作,而不是成功。

爲了讓您一開始,它很可能需要:

  • 有些背棄地圖圖像的
  • 將座標轉換的引腳的能力(X,Y)像素的地圖圖象上的座標

你很可能需要重寫:

  • 的MeasureOverride:找出多少空間地圖需要
  • ArrangeOverride:找出當前所有的孩子去
  • OnDisconnectVisualChildren:當你刪除一個引腳
  • PrepareContainerForItemOverride做什麼:創建一個項目容器的項目添加/刪除

然後你可以繼續添加諸如childtransitions之類的東西(所以他們'彈出')。然後,你需要做的就是設置虛擬機,加載你的引腳,然後你就可以參加比賽了。

好的編碼!

+0

你最好解釋一下,當用戶在全球各地盤旋時,你如何繪製地圖上的點。我認爲你的心理解決方案有一些實際問題。最好的方法是直接與地圖層交互的AddPin()和RemovePin()方法。 – 2013-05-08 15:53:03

+0

我想那些基本上分別是PrepareContainerForItemOverride和OnDisconnectVisualChildren,不是嗎? – 2013-05-08 18:19:42