拖动地图时 MapControl Xaml 元素滞后
Posted
技术标签:
【中文标题】拖动地图时 MapControl Xaml 元素滞后【英文标题】:MapControl Xaml Element Lagging when dragging map 【发布时间】:2014-09-10 00:34:46 【问题描述】:我有一个 Windows Phone 运行时应用程序,我在其中使用 xaml 在地图上显示图钉。
<Maps:MapControl
Center="Binding GeoPoint, Mode=OneWay"
Name="mapControl"
Height="270"
MapServiceToken="token"
ZoomLevel="1">
<Ellipse
Fill="Red"
Height="20"
Width="20"
Maps:MapControl.Location="Binding GeoPoint, Mode=OneWay"
Maps:MapControl.NormalizedAnchorPoint="1, 0.5"/>
</Maps:MapControl>
当我拖动地图时,控件试图保持在同一位置时会出现一些滞后。
任何帮助将不胜感激。
谢谢,
【问题讨论】:
在处理相同的滞后问题时,我想知道您是否让“NormalizedAnchorPoint”正常工作。无论我做什么,无论是否绑定,它总是使用 (0,0) :/ MapControl 的 API 存在严重漏洞,我真的不鼓励任何人使用它。这是许多发现的故障之一。为了使 NormalizedAnchorPoint 正常工作,您必须将该附加属性绑定到 DataContext 中的 Point 属性 - 很糟糕的解决方法,但它可以工作。我相信从代码隐藏中分配一个值也可以解决问题。不幸的是,我无法修复地图元素的滞后。如果您发现任何可以帮助闪烁的东西,请分享! afaik normalizedanchorpoint only 允许新 Point(x,y) 的值 x 和 y 为 0 或 1。 【参考方案1】:如果您正在对 CenterChanged 或 ZoomLevelChanged 进行一些工作,请不要这样做。我在计算这个事件中的一些东西,结果非常棒。对于像这样进行节流(使用响应式扩展)的用户,您应该会获得更流畅的体验:
Observable.FromEventPattern<object>(this.MyMap, "CenterChanged").Throttle(TimeSpan.FromSeconds(.25)).ObserveOnDispatcher().Subscribe(e => UpdateMap());
Observable.FromEventPattern<object>(this.MyMap, "ZoomLevelChanged").Throttle(TimeSpan.FromSeconds(.25)).ObserveOnDispatcher().Subscribe(e => UpdateMap());
【讨论】:
以上是关于拖动地图时 MapControl Xaml 元素滞后的主要内容,如果未能解决你的问题,请参考以下文章
关于MapControl和PageLayout地图同步的问题