xamarin forms map 有时更新图块非常慢,除非我旋转设备

xamarin forms map sometimes very slow to update tiles, unless I rotate device

我正在将 xamarin 表单地图用于跟踪应用程序,因此视图往往会在景观中移动,并且需要加载图块以显示新区域。我正在使用 map.MoveToRegion

滚动

有时地图块的加载速度非常慢,以至于整个区域都是白色的,没有图形。最初我认为这是一个数据速度问题,但事实证明,如果我旋转设备,改变布局 landscape/portrait,这会使地图立即刷新,所以数据显然是可用的,只是没有被渲染.缩放可以产生相同的效果,尽管效果不那么好。

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

原来的问题是移动 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);
}

有很多自定义地图渲染的示例,所以我不会在这里 post。主要收获真的只是...

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