除非我旋转设备,否则xamarin表单地图有时更新地图的速度有时非常慢

问题描述

我将xamarin表单地图用于跟踪应用程序,因此视图倾向于在横向上移动,并且需要加载图块以显示新区域。我正在使用map.MovetoRegion

滚动

有时,地图图块的加载速度非常缓慢,以至于整个区域都是白色,没有图形。最初我以为这是数据速度问题,但事实证明,如果我旋转设备,更改布局横向/纵向,这会使地图立即刷新,因此数据显然可用,只是未渲染。缩放可以起到相同的作用,尽管效果不那么好。

如何强制刷新,或者只是使地图刷新更快?

解决方法

发现问题在于,移动Forms.map的方法是通过MoveToRegion进行的,并且可以使运动动画化。如果动画花费一秒钟,并且将新位置设置为更高或相等的频率,则地图实际上始终位于动画的中间。

地图动画时,它不愿意刷新图块,因此地图最终变为空白。

当我旋转设备时,这种持续的动画被中断,并且可以刷新图块图形。

解决方案是使用一种自定义渲染器,使用一种非动画方法来移动地图焦点。

private void moveToFast(Location location)
{
  var update = CameraUpdateFactory.NewLatLng(new 
    Android.Gms.Maps.Model.LatLng(location.Latitude,location.Longitude));
  googleMap.MoveCamera(update);
}

有很多自定义地图渲染的示例,因此我不会在此处发布。主要的收获实际上就是...

地图处于动画状态时,它不会刷新其图块,因此,如果您不断更新地图位置,则应以非动画方式进行。