2013-04-30 41 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