【问题标题】:MapControl Xaml Element Lagging when dragging map拖动地图时 MapControl Xaml 元素滞后
【发布时间】: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。

标签: map windows-runtime windows-phone-8.1 lag pushpin


【解决方案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());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多