簡體   English   中英

Xamarin.Forms.Maps自定義折線渲染器在視圖中不渲染

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

我正在嘗試遵循本指南 ,以便在Xamarin.Forms應用程序的地圖上繪制折線。 它應該實時跟蹤用戶的位置,並在輸入新的位置數據時更新折線。

我編寫了一個自定義地圖渲染器,它將渲染折線,但是由於某些原因,它在地圖顯示時不會更新。 我必須導航回到主啟動頁面並再次導航到映射頁面以進行更新。

我提取了最少的代碼來重現該問題,但是在此處粘貼仍然太多,因此我將其托管在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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM