Xaml 在Bing地图上为Metro应用程序设置标记针动画

Xaml 在Bing地图上为Metro应用程序设置标记针动画,xaml,windows-8,windows-runtime,bing-maps,Xaml,Windows 8,Windows Runtime,Bing Maps,我有一个Bing地图控件,我想在地图上画一个针的位置动画 理想情况下,我希望编写如下代码: //Image myPin=地图层上的某个图像; var sb=新故事板(); var duration=DurationHelper.FromTimeSpan(System.TimeSpan.fromMillicles(1000)); 某人持续时间=持续时间; LocationAnimation ani=新的LocationAnimation(); ani.To=新位置(33.3,11.1);//目的

我有一个Bing地图控件,我想在地图上画一个针的位置动画

理想情况下,我希望编写如下代码:

//Image myPin=地图层上的某个图像;
var sb=新故事板();
var duration=DurationHelper.FromTimeSpan(System.TimeSpan.fromMillicles(1000));
某人持续时间=持续时间;
LocationAnimation ani=新的LocationAnimation();
ani.To=新位置(33.3,11.1);//目的地lat,液化天然气
ani.持续时间=持续时间;
添加(ani);
故事板.SetTarget(ani,myPin);
故事板.SetTargetProperty(ani,“MapLayer.Position”);
添加(“moveMyPin”,sb);
某人开始做某事;
当然,框架中没有
LocationAnimation
类。有两种类似的方法:
PointAnimation
用于
Point
类型,而
DoubleAnimation
用于单个
double

我假设我必须实现我的
Timeline
派生类,但是我发现到目前为止的文档在这方面没有帮助,我不知道从哪里开始

如何为没有准备好*动画类的属性设置动画?我错过什么了吗

更新:我想我可以做如下事情

//让aniX和Any成为两个双重动画对象
故事板.SetTargetProperty(aniX,”(MapLayer.Position.Latitude”)
StoryBoard.SetTargetProperty(aniY,“(MapLayer.Position.Longitude”)
但现在我又遇到了另一个问题,因为我不知道如何设置附加属性的动画,并且总是会遇到类似“无法解析指定对象上的TargetProperty(MapLayer.Position).Latitude”这样的异常

所以我想现在的问题是:如何为附着的属性指定属性路径

进一步更新:我可能在“SetTargetProperty”这件事上有错误的线索,因为这会产生一个依赖动画(请参见评论中的链接)。是否有更好的方法将标记销动画化到坐标目标

更新3:正如Jared指出的那样,我可以尝试设置
渲染转换的动画,或者使用转换来实现我的结果。我已经走了这条路,这似乎不是我的解决办法。这是我发现的:

  • 使用
    重新定位含义
    ,似乎我必须给出管脚的新像素位置。这是有问题的,原因有两个:首先,我知道pin的lat/lng目的地,但必须计算出投影(据我所知,没有公共接口来处理投影)。其次,投影本身可以随着地图的缩放/平移而改变。动画结束时的像素目标不能与初始像素目标相同。在我的场景中,这是一个主要问题,因为很可能在动画发生时贴图正在移动
  • 使用
    重新定位METRANSION
    所有奇怪的像素/投影问题都消失了。这是到目前为止我唯一能看到我期望的动画的方法。我只是设置了转换并设置了标签的新lat/lng位置(通过MapLayer.SetPosition)。但它有两个主要问题。我不能为动画设置持续时间(也不能设置缓和功能)。最重要的是,当引脚到达其最终位置时,我看不到执行代码的方法

附加属性可以设置动画,但必须将其名称括在括号中。请参见此处的示例:

但是,我相信这只适用于设置整个值(位置),而可能不适用于子属性(纬度和经度)

我想知道你是否能提供更多关于你想做什么的信息。这是临时动画吗?i、 e.您是否希望pin在入口或出口时显示动画?如果是这样的话,您可以只在渲染器上执行动画转换X和Y。实际上,您不会更改接点的位置,但可以使用RenderTransform临时更改其绘制位置

更好的是,您可能能够摆脱现在内置到框架中的免费动画。您甚至不需要故事板来使用它们,只需在元素上设置它们,如下所示:

<Button Content="Transitioning Button">
     <Button.Transitions>
         <TransitionCollection> 
             <EntranceThemeTransition/>
         </TransitionCollection>
     </Button.Transitions>
</Button>

有关动画库的更多示例,甚至许多动画的视频预览,请参见:


好了,伙计,你的问题与Bing地图无关。它与依赖项属性相关,除非您指定它们可以设置动画,否则它们不能设置动画。以下是方法:


另一个答案中与Charles网站的链接不是最新的。

必须指出的是,我试图做的是“依赖动画”,因此它不会从硬件加速中受益。我让它部分使用带有纬度/经度属性的自定义UserControl,但它太慢了,没有用处。也许有另一种方法可以让它工作。进一步讨论MSDN和。这是我使用DependencyProperties在silverlight中制作bing地图动画所做的,希望它能为您指明正确的方向如果您愿意贡献,这里有一个开源项目扩展了Bing Maps metro控件:我想在两个不同的场景中设置Position属性的动画。可以这样想:1)我想要一个标记在一条线上从一个来源移动到一个目的地;2) 我希望标记显示为从设置位置的另一个标记“流出”并移动到另一个位置。我已经尝试过重新定位含义和渲染转换。我会在主要问题的“更新3”中发布我的发现,因为这个“答案”空间有限。杰瑞,这已经在一条评论中提到了。依赖动画不是可行的解决方案,因为它太慢了。太慢了,嗯?我想知道您是一次设置了太多的动画还是一次设置了太多的属性。你能稍微移动一下你的UI,让它显示更少的项目吗