拖动地图时,MapControl Xaml元素延迟

11

我有一个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) :/ - sibbl
1
MapControl的API存在严重的缺陷,我真的不建议任何人使用它。这是众多发现的故障之一。为了使NormalizedAnchorPoint正常工作,您必须将该附加属性绑定到DataContext中的Point属性 - 这是一个糟糕的解决方法,但它可以工作。我相信从代码中分配一个值也可以解决问题。不幸的是,我无法修复地图元素的滞后。如果您发现任何可以帮助消除闪烁的东西,请分享! - Malutek
据我所知,normalizedanchorpoint 允许使用值为0或1的x和y创建新的Point(x,y)。 - koenmetsu
1个回答

0
如果你正在处理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());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接