Xamarin.Forms.Maps 自定义多段线渲染器在视图中不渲染

Xamarin.Forms.Maps custom polyline renderer does not render when in view

我正在尝试按照 this guide 在 Xamarin.Forms 应用程序的地图上绘制多段线。它应该实时跟踪用户的位置,并在有新位置数据时更新折线。

我编写了一个自定义地图渲染器来渲染多段线,但由于某些原因,当地图处于视图中时它不会更新。我必须导航回主启动页面并再次导航到映射页面才能更新。

我提取了重现问题的最少代码,但粘贴在这里还是太多了,所以我将其托管在 GitHub:

https://github.com/Steztric/MapWithWaylineSample

请有人告诉我我做错了什么。您可以通过克隆存储库并 运行 来演示问题。

每次都需要创建渲染器,所以移除class变量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;