加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

xaml – 在Bing Maps上为Metro应用程序设置标记引脚的动画

发布时间:2020-12-14 05:36:20 所属栏目:Windows 来源:网络整理
导读:我有一个Bing Map控件,我想动画地图上绘制的一个图钉的位置. 理想情况下,我想写这样的代码: // Image myPin = some Image on the map layer;var sb = new Storyboard();var duration = DurationHelper.FromTimeSpan(System.TimeSpan.FromMilliseconds(1000)
我有一个Bing Map控件,我想动画地图上绘制的一个图钉的位置.

理想情况下,我想写这样的代码:

// Image myPin = some Image on the map layer;

var sb = new Storyboard();
var duration = DurationHelper.FromTimeSpan(System.TimeSpan.FromMilliseconds(1000));
sb.Duration = duration;

LocationAnimation ani = new LocationAnimation();
ani.To = new Location(33.3,11.1); // destination lat,lng
ani.Duration = duration;

sb.Children.Add(ani);
Storyboard.SetTarget(ani,myPin);
Storyboard.SetTargetProperty(ani,"MapLayer.Position");

Resources.Add("moveMyPin",sb);
sb.Begin();

当然框架中没有LocationAnimation类.有几个类似的:PointAnimation使用Point类型,而DoubleAnimation使用单个double值.

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

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

更新:我想我可以做点什么

// let aniX and aniY be two DoubleAnimation objects
StoryBoard.SetTargetProperty(aniX,"(MapLayer.Position).Latitude")
StoryBoard.SetTargetProperty(aniY,"(MapLayer.Position).Longitude")

但现在我有另一个问题,因为我没有看到如何动画附加属性,并总是得到一个例外,如“无法解析指定对象上的TargetProperty(MapLayer.Position).Latitude”.

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

进一步更新:我可能在“SetTargetProperty”事情上处于错误的领先地位,因为这将产生一个依赖动画(参见评论中的链接).有没有更好的方法将标记引脚设置为坐标目标?

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

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

解决方法

附加属性可以设置动画,但必须将其名称括在括号中.在这里查看示例:

http://www.charlespetzold.com/blog/2007/09/080231.html

但是,我认为这仅适用于设置整个值(位置),可能不适用于子属性(纬度和经度).

我想知道你是否可以提供更多关于你要做什么的信息.这是一个临时动画吗?也就是说你想要引脚在入口或出发时动画?如果是这样,你可以在RenderTransform X和Y上做一个动画.您实际上不会更改引脚的位置,但您可以使用RenderTransform临时更改其绘制位置.

更好的是,您可能能够摆脱现在构建到框架中的免费动画.你甚至不需要故事板来使用它们,你只需将它们设置在元素上就像这样:

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

有关动画库的更多示例以及许多动画的视频预览,请参阅:

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452703.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读