Xamarin.Forms.Maps定制时,鉴于
问题描述:
我试图按照this guide以画在Xamarin.Forms应用地图上的折线折线渲染器不渲染。它应该实时跟踪用户的位置,并在新的位置数据进来时更新折线。Xamarin.Forms.Maps定制时,鉴于
我写了一个自定义地图渲染器,它将渲染折线,但由于某种原因,它不会在地图处于更新状态时进行更新视图。我必须导航回到主启动页,再导航到映射页面来更新。
我提取出来的最小代码重现的问题,但它仍然是太多粘贴在这里,所以我主持它在GitHub上:
https://github.com/Steztric/MapWithWaylineSample
请能有人让我知道我在做什么错误。您可以通过克隆回购并运行它说明问题。
答
您需要创建渲染每一次,所以删除类变量polylineRenderer和使用本地之一。
MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)
{
IMKOverlay overlay = Runtime.GetNSObject(overlayWrapper.Handle) as IMKOverlay;
if (overlay is MKPolyline)
{
var polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline);
polylineRenderer.FillColor = UIColor.Blue;
polylineRenderer.StrokeColor = UIColor.Red;
polylineRenderer.LineWidth = 3;
polylineRenderer.Alpha = 0.4f;
return polylineRenderer;
}
else
{
return null;
}
}
还可以简化事情有点
定义MKPolyline currentWayline;
然后
var wayline = MKPolyline.FromCoordinates(coords.ToArray());
//IMKOverlay overlay = Runtime.GetNSObject(wayline.Handle) as IMKOverlay;
nativeMap.AddOverlay(wayline);
currentWayline = wayline;
谢谢!此问题已被窃听我从字面上星期! – Steztric