首页 > 解决方案 > xamarin 表单地图有时更新图块很慢,除非我旋转设备

问题描述

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

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

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

标签: xamarin.formsxamarin.forms.maps

解决方案


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

有很多自定义地图渲染的例子,所以我不会在这里发布。主要的外卖真的只是......

当地图在动画时,它不会刷新它的图块,所以如果你不断更新地图位置,你应该以非动画的方式这样做。


推荐阅读